VC++ 迭代器 iterator, const_iterator, const iterator

迭代器 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:合法的指針運算:

 

  • 相同類型指針之間的賦值運算
  • 指針同整數之間的加減法運算
  • 相同類型指針之間的減法和比較運算
  • 將指針賦值爲0 或 指針與0之間的比較運算
相關文章
相關標籤/搜索