STL學習筆記14 迭代器

2021-08-03 21:08:24 字數 2284 閱讀 6159

所有的容器都定義了自己的迭代器型別,所以一般情況下,不需要再自己新增迭代器標頭檔案。但是如果要使用一些特殊的迭代器,如反向迭代器,或者一些迭代器輔助函式,那麼就需要新增標頭檔案。

型別能力

提供者輸入迭代器

一次向前讀取

istream

輸出迭代器

向前寫入

ostream,inserter

前向迭代器

向前讀取和寫入

forward list,unordered containers

雙向迭代器

向前和向後的讀取和寫入

list,set,multiset,map,multimap

隨機訪問迭代器

隨機讀取和寫入

迭代器運算中,++iter比iter++更快,所以最好選用++iter

*iter //讀取實際元素

iter ->member //讀取實際元素的成員

++iter //向前步進(返回新位置)

iter++

//向前步進(返回舊位置)

iter1 == iter2 //判斷兩個迭代器是否相等

iter1 != iter2 //判斷兩個迭代器是否不等

type(iter) //copy建構函式

*iter = value

//將數值寫到迭代器所指位置

++iter //向前步進(返回新位置)

iter++ //向前步進(返回舊位置)

type(iter) //copy建構函式

*iter //訪問實際元素

iter ->member //訪問實際元素的成員

++iter //向前步進(返回新位置)

iter++

//向前步進(返回舊位置)

iter1 == iter2 //判斷兩個迭代器是否相等

iter1 != iter2 //判斷兩個迭代器是否不等

type() //default建構函式

type(iter) //copy建構函式

iter = iter2 //賦值

*iter //訪問實際元素

iter ->member //訪問實際元素的成員

++iter //向前步進(返回新位置)

iter++

//向前步進(返回舊位置)

--iter //向後步進(返回新位置)

iter--

//向後步進(返回舊位置)

iter1 == iter2 //判斷兩個迭代器是否相等

iter1 != iter2 //判斷兩個迭代器是否不等

type() //default建構函式

type(iter) //copy建構函式

iter = iter2 //賦值

iter[n] //訪問索引位置為n的元素

iter+=n //向前跳n個元素(若n為負,則向後跳)

iter-=n //向後跳n個元素(若n為負,則向前跳)

iter+n //傳回iter之後的第n個元素

n+iter //傳回iter之後的第n個元素

iter-n //傳回iter之前的第n個元素

iter1-iter2 //傳回iter1和iter2之間的距離

iter1//判斷iter1是否在iter2之前

iter1>iter2 //判斷iter1是否在iter2之後

iter1<=iter2 //判斷iter1是否不在iter2之後

iter1>=iter2 //判斷iter1是否不在iter2之前

advance()

//使迭代器前進給定的距離

distance()

//返回兩個迭代器之間的距離

next()

//使迭代器前進一步

prev()

//使迭代器後退一步

begin()

//返回指向容器首元素的迭代器

end()

//返回指向容器尾元素的迭代器

STL 迭代器學習

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

STL學習筆記(迭代器配接器)

reverse 逆向 迭代器 reverse迭代器是一種配接器。重新定義遞增運算和遞減運算。使其行為正好倒置。如果你使用這類迭代器,演算法將以逆向次序處理元素。所有標準容器都允許使用reverse迭代器來遍歷元素。下面是個例子 1 include 2 include 3 include 4 usin...

STL學習筆記之迭代器 utility

是乙個很小的標頭檔案。現在其中剩下來的只有模板類pairl 一些與之相關聯的模板函式和操作符,以及其他四個模板操作符了。該模板用來將兩個物件表示成乙個物件 當你想要乙個函式返回兩個值,或者想用乙個容器來儲存具有成對值的元素時,這樣做就比較方便。utility pair 對組,可以將兩個值 first...