四種型別分別為:iterator、const_iterator、reverse_iterator、const_reverse_iterator
對於container而言,iterator的作用相當於t*,而const_iterator則相當於const t*(你可能也見過t const*這樣的寫法:)。增加乙個iterator或者const_iterator可以在乙個從容器開頭趨向尾部的遍歷中讓你移動到容器的下乙個元素。reverse_iterator與const_reverse_iterator同樣相當於對應的t*和const t*,所不同的是,增reverse_iterator或者const_reverse_iterator會在從尾到頭的遍歷中讓你移動到容器的下乙個元素。
圖中顯示了從iterator到const_iterator、從iterator到reverse_iterator和從reverse_iterator到const_reverse_iterator可以進行隱式轉換。並且,reverse_iterator可以通過呼叫其base成員函式轉換為iterator。const_reverse_iterator也可以類似地通過base轉換成為const_iterator。乙個圖中無法顯示的事實是:通過base得到的也許並非你所期待的
iterator。
千萬不要傻乎乎的宣稱const迭代器一無是處。不,它們可以與演算法默契配合,因為演算法通常並不關心迭代器是什麼型別,只要是適當的種類就可以了,很多容器的成員方法也接受const迭代器。只有insert和erase的一些形式有些吹毛求疵。
四種容器型別
容器 collection 變數 值 一般程式語言都會設計儲存多個值的儲存方式 類似於c語言裡的陣列 容器分為四種型別 list 列表 鍊錶的實現 將幾塊不連續的記憶體聯絡起來 set 集合 tuple 元組 dict 字典 1.列表 list 是一種鍊錶的實現。列表的定義 可以儲存任意型別,不止數...
C 提供了四種新的型別強制
static cast const cast reinterpret cast dynamic cast 1 staic cast靜態強制 code 不能在無關的指標之間進行static型別強制 code c class canimal class cgiraffe public canimal i...
C 提供了四種新的型別轉換
c 提供了四種新的型別轉換 static cast const cast reinterpret cast dynamic cast 1 staic cast靜態強制 不能在無關的指標之間進行static型別強制 class canimal class cgiraffe public canimal...