STL學習記錄(二) 迭代器簡要

2021-07-02 02:29:44 字數 1348 閱讀 1051

迭代器(iterator)類似於指標,能夠通過它訪問到它所指的元素。每個容器都有一些基本的函式讓你能夠獲得迭代器並訪問容器裡的元素。begin() 返回容器中第乙個元素的迭代器;end() 返回容器中最後乙個元素所在位置的下乙個位置而不是最後乙個元素的位置。另外關於迭代器 ++pos、pos++兩者的效率問題中第乙個操作的效率更高因為後者需要建立乙個臨時物件來返回結果。說明**:

operator operator::operator++()

operator operator::operator++(int )

iterator操作基本例項(g++ 4.8除錯通過):

#include

using

namespace

std;

int main()

//iterator task

for(list

::iterator pos=temp.begin();pos!=temp.end();++pos)

cout

for(list

::const_iterator pos=temp.begin();pos!=temp.end();++pos)

cout

for(auto pos=temp.begin();pos!=temp.end();++pos)

cout

for(auto pos=temp.cbegin();pos!=temp.cend();++pos)

cout

《如上所示iterator的基本型別有兩種iterator與const_iterator前者對於容器的元素可讀可寫,而後者只能讀而不能修改元素的值。而auto操作符是c++11標準加入的,它的優勢可以很明顯的看出來,首先宣告簡單明瞭,而且如果更改容器的型別,宣告語句不需要做修改,而在原先的標準下的宣告則要修改。

#include

using

namespace

std;

int main()

cout

temp.clear();

temp.insert();//since c++11

for(auto pos=temp.cbegin();pos!=temp.cend();++pos)

cout

《輸出的結果都是:

1 2 3 4 5 6

上面例子表明關聯容器的迭代器與插入的時間無關只與插入的值有關而且set容器不被允許有相同值(相同值只顯示乙個,要是需要相同值都可以使用 multiset )。該例中插入的數字可以用二叉排序樹的形式來理解,順序輸出的形式是二叉樹的中序輸出。

STL 迭代器學習

stl中迭代器是連線演算法和容器的工具,迭代器可以在不了解容器內部原理的情況下遍歷容器。迭代器要遍歷容器的元素,所以它內部必須封裝乙個與容器型別相關聯的指標,通過過載 等操作符實現迭代器操作。迭代器是乙個類模板,主要包括乙個指標,可以包含各種型別的元素,根據容器的不同,等操作實現也會不同。迭代器的5...

STL學習之迭代器

迭代器提供了順序訪問容器中每個元素的方法。迭代器可以使用 運算子獲得下乙個元素的迭代器,可以使用 運算子訪問當前迭代器所指向的元素。如果元素型別是結構體或類,還可以使用 運算子直接訪問該元素的乙個成員。以下是個人在學習迭代器時獲得得一些見解。輸入流迭代器用來從乙個輸入流中連續地輸入某種型別的資料,它...

STL迭代器失效問題記錄

根據 include include using namespace std int main vector的erase返回值為迭代器 std vector erase iterator erase iterator position iterator erase iterator first,it...