迭代器的注意事项

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的带符号整型数。

原文地址:https://www.cnblogs.com/Dark-King/p/9401392.html