C++迭代器(STL迭代器)


迭代器按照定義方式可以分為以下四種:

(1)正向迭代器,定義方法如下:

容器類名::iterator 迭代器名;

(2)常量正向迭代器,定義方法如下:

容器類名::const_iterator 迭代器名;

(3)反向迭代器,定義方法如下:

容器類名::reverse_iterator 迭代器名;

(4)常量反向迭代器,定義方法如下:

容器類名::const_reverse_iterator 迭代器名;

 

通過迭代器,我們可以讀取它指向的元素,*迭代器名 就表示迭代器所指向的元素,通過非常量迭代器還能修改其指向的元素

 

迭代器都可以進行++操作,反向迭代器和正向迭代器的區別在於:

對正向迭代器進行++操作時,迭代器會指向容器中的后一個元素;

對反向迭代器進行++操作時,迭代器會指向容器中的前一個元素;

 

注意:容器適配器stack,queue,priority_queue 沒有迭代器。

 

常用的迭代器按功能強弱分為:輸入,輸出,正向,雙向,隨機訪問 五種。

(1)正向迭代器

假設p是一個正向迭代器,則p支持以下操作:

++p,p++,*p,兩個迭代器可以進行相互賦值,以及==,!=比較

(2)雙向迭代器

雙向迭代器具有正向迭代器的所有功能,並且可以進行 --p 和 p-- 的操作

(3)隨機訪問迭代器

隨機訪問迭代器具有雙向迭代器的所有功能,並且還可以進行以下操作,假設i是一個整型變量或常量:

p+=i:p往后移動i個元素

p-=i:p往前移動i個元素

p+i:返回p后面第i個元素的迭代器

p-i:返回p前面的第i個元素的迭代器

p[i]:返回p后面第i個元素的引用

兩個隨機訪問迭代器還可以進行<,>,<=,>=,- 的操作

 

容器                迭代器功能

vector              隨機訪問

deque               隨機訪問

list                    雙向

set/multiset        雙向

map/multimap        雙向

stack                 不支持迭代器

queue               不支持迭代器

priority_queue      不支持迭代器

 

迭代器的輔助函數:

advance(p,n):使迭代器p向前或向后移動n個元素

distance(p,q):計算兩個迭代器之間的距離,即迭代器p經過多少次++操作后和迭代器q相等,如果調用時p已經指向q的后面,則該函數會陷入死循環

iter_swap(p,q):用於交換兩個迭代器p,q指向的值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM