迭代器iterator的一點總結

2021-08-09 17:55:02 字數 1222 閱讀 9775

在回顧使用string和vector容器的時候,用到了iterator(迭代器),這裡把一些容易忽略的要點總結如下:

首先要明確一點,iterator是提供對物件的間接訪問的,類似於指標的作用。

它們適用範圍不同

iterator對於任何容器都是使用的,而[ ]下標運算子只對於string和vector這種儲存在連續的記憶體空間上的容器有效,對於像list、forward_list等容器則不適用。

因此,最好在所有場合下使用iterator,而不是[ ]!!!

iterator運算子(適用於所有容器

iter->mem

*iter

++iter

–iter (forward_list 不支援遞減操作,因為是單向鍊錶)

iter1==iter2

iter1 != iter2

特有的運算子(string和vector獨有,因此它們在記憶體空間中是連續的)

iter+n

iter - n

iter += n

iter -=n

iter1 - iter2

> 、 >= 、 < 、<=

無須知道它的確切型別,使用iterator和const_iterator來表示iterator的型別

eg:

vector < int > ::iterator it1;

string::iterator it2;

vector < int > ::const_iterator it3;

string::const_iterator it4;

在使用的時候,也可以使用auto表示它們的型別;

{ cout<<*it

<

是乙個左閉右開的區間,[ begin,end ),end指向的元素不在範圍內

它的好處在於

判斷範圍為空時:只需要判斷begin != end 就行了,一般用在迴圈體的結束條件

begin和end返回的都是iterator型別

cbegin和cend返回的是const_iterator型別,不可以修改迭代器指向的內容

需要注意的是:可以將乙個普通的iterator型別轉換成const_iterator型別,反之則不行。許可權只能變小,而不能變大。

python的迭代器iterator

可以被next函式呼叫不斷返回下乙個值的物件稱為迭代器 iterator 可以直接用於for迴圈的物件稱為可迭代物件 iterable 所有的可迭代物件均可以通過iter函式轉變為迭代器。事實上,for迴圈內部先呼叫iter 把iterable變成iterator然後再進行迴圈迭代 iterator...

Java的Iterator迭代器

當我們要顯示list收集的所有物件,也許你會這麼寫 listlist new arraylist list.add 1 list.add 2 list.add 3 for int i 0 i list.size i 這個方法適合所有操作list介面的物件,如arraylist linkedlist等...

迭代器的使用Iterator

對迭代的認識 迭代模式是訪問集合類的通用方法,只要集合類實現了iterator介面,就可以用迭代的方式來訪問集合類內部的資料 目的 使得不用暴露集合內部的結構而達到迴圈遍歷集合的效果 如果不使用迭代器就直接用迴圈來遍歷,如 迭代器的初始化方式 迭代器介面中常用的方法 1.hasnext 該方法英語判...