1. 程式人生 > >叠代器的註意事項

叠代器的註意事項

常量指針 取地址 () 循環 容器 獲取 ring diff 結束

1、叠代器可以像使用下標運算符一樣訪問容器和string類對象的元素,所以容器都可以使用叠代器,但是不是所以容器都可以使用下標運算符。

2、叠代器類似於指針,通過間接訪問去訪問容器或string對象的元素。

3、叠代器要麽指向某個元素,要麽指向某個元素的下一個位置。

4、獲取叠代器的值不是通過取地址,而是根據叠代器的成員,它的成員提供了返回叠代器的功能,例如,begin、end;

5、如果叠代器為空,那麽begin、end返回的都是指向容器尾部元素的下一個元素。

6、iter1==iter2;  當兩個叠代器都指向同一個元素,或者它們都指向同一個容器的尾叠代器。

7、試圖解引用一個非法叠代器,例如叠代器沒有指向一個元素,都會產生未定義的行為。

8、邏輯上,叠代器使用自增運算符與整數的自增運算符類似,只是整數的自增運算符是將整數的值加一,而叠代器則是將叠代器往前移動一個位置。

9、使用for循環進行遍歷時,使用!=去判斷是否遍歷結束,而不是使用<去判斷,是因為不是所有的容器都支持<運算符。

10、iterator類型的叠代器可以讀寫元素,而const_iterator類型的叠代器只能讀不能寫。

11、如果容器或string對象是常量,那麽只能使用const_iterator類型的叠代器,因為const_iterator和常量指針一樣,他們所指向的元素是只讀的。

12、對於叠代器的理解,某個類型是叠代器當且僅當它支持某些操作,這些操作使得我們能夠去訪問容器中的元素或者將從某一個元素移動到另一個元素。

13、為了便於獲取const_iterator類型叠代器的返回值,C++11新標準提供了cbegin()、cend()的函數,不管叠代器指向的元素是否是常量,都返回const_iterator的叠代器。

14、iter1 - iter2;  表示的是兩個叠代器的距離。其類型是difference_type的帶符號整型數。

叠代器的註意事項