迭代器 iterator, const_iterator, const iteratorspa
迭代器iterator的做用相似於指針。指針
(1)iterator只有針對制定<類型>的容器纔有效。例如:code
vector<int> vec; vector<int>::iterator itr;
對於vec來講,itr.begin()指向的是vec的第一個元素。Itr.end()指向的是vec的最後一個元素的下一個元素(做爲哨兵,實際不存在)。可用itr.begin() == itr.end()來判斷容器是否爲空。blog
像指針同樣,itr能夠++,*itr表示解引用,即表示容器內被itr指向的元素。it
(2)const_iterator爲一種迭代器,這種迭代器能夠讀取其指向的內容,也能夠自增,可是不能夠對其指向的內容進行「寫「操做。class
例如:容器
vector<int>::const_iterator constItr = vec.begin(); cout<< *constItr << endl; //正確 constItr++;//正確 *constItr = 10;//錯誤!
另外,因爲const_iterator只可讀取其指向的內容,因此能夠用const_iterator做爲const 的 容器的迭代器。迭代器
(3)容易混淆的 由const 修飾符修飾的iterator引用
其幾乎無做用。di
與普通的iterator同樣,其能夠解引用,並能夠修改其指向的內容。但迭代器自己不可被修改,由於它由const修飾。
因此該iterator不能自增,其只能爲第一次賦予的值,故並沒有明顯的做用。
P.S:合法的指針運算: