容器類的迭代器討論

2022-05-16 12:30:00 字數 1579 閱讀 8463

一級容器包括「順序容器」和「關聯容器」,容器介面卡不屬於一級容器

迭代器用於訪問和控制一級容器中的元素

為什麼容器介面卡不支援?因為容器介面卡依賴某一種具體容器實現。

前向迭代器也可以支援前向++和後向++

lis支援雙向迭代器,然而queue是容器介面卡,不支援迭代器

輸入迭代器用於讀入資料,輸出迭代器用於寫入資料,所以輸出迭代器用於左值

stack是容器介面卡,不可使用迭代器

存入set後,會按照規則排序(預設從小達到排序)

}在下面具體分析。

1、it1,it2不可以比較大小,因為it1,it2是list的迭代器,是雙向迭代器

2、it3,it4可以比較大小,因為it3,it4是vector的迭代器,支援隨機迭代器

首先討論一點,為什麼vector,deque支援隨機迭代器,list不支援隨機迭代器?

vector,deque是線性結構,可以隨機訪問

list是鍊錶是結構,不能隨機訪問

雙向迭代器不可以比較大小,隨機迭代器可以比較大小

雙向迭代器不可以比較大小,因為其所指的,在一條鍊錶上的元素的位址不是連續的,比較大小沒有意義

隨機迭代器可以比較大小,因為其所指的,在乙個連續空間中的元素的位址是連續的,比較大小有意義

盡量使用

for(itr3=li3.begin();itr3 != li3.end();itr3++)
而不是

for(itr3=li3.begin();itr3 < li3.end();itr3++)
因為,前者對於各種迭代器均通用,後者只對隨機迭代器通用,而且,一旦考慮從後向前遍歷,就需要改變"",比如

for(itr3=li3.rbegin();itr3 > li3.rend();itr3--)

STL容器迭代器失效問題討論

vector迭代器的幾種失效的情況 1 當插入 push back 乙個元素後,end操作返回的迭代器肯定失效。23 當進行刪除操作 erase,pop back 後,指向刪除點的迭代器全部失效 指向刪除點後面的元素的迭代器也將全部失效。deque迭代器的失效情況 在c primer一書中是這樣限定...

容器的內嵌類 迭代器

容器是c stl庫里實現的重要結構,這裡簡單實現鍊錶的構造以及遍歷操作。在stl庫里實現了容器的迭代器,用於遍歷容器中的部分或全部元素。在這裡我們來模擬實現迭代器的簡單遍歷,以及容器迭代器介面的實現。節點 template struct listnode t data listnode next l...

Qt的容器類之容器,迭代器

qt中的容器被分為兩個大類 容器元素是乙個值的,比如qvector,以及容器元 素是乙個 key,value 對的,比如qmap。1 第一大類中,qvector將其所有元素存放在一塊連續的記憶體中。隨機訪問的速度很快,但是插入 刪除操作很慢。qstack是qvector的子類,實現棧的功能。除了具有...