在回顧使用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返回的都是iterator型別它的好處在於
判斷範圍為空時:只需要判斷begin != end 就行了,一般用在迴圈體的結束條件
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 該方法英語判...