1:首先迭代器是一种专门为访问容器而设计的一种数据类型,同时也是一种数据结构,类模板,他提供来比下标操作更为通用的 方法,对所有的容器有适用;
2:每个容器都有自己的iterator类型,如vector<int>::iterator
3:begin和end操作,begin()返回迭代器的第一个元素,end()返回容器最后一个元素的下一个元素,如果vector为空,则begin返回的迭代器于end相同。
4:迭代器的使用类似于指针,可以经行解引用,加减,相等等操作
5:迭代器的类型:const_iterator和const iterator
const_iterator是一个指向常容器的迭代器,自身是个变量,但是指向的直不能改变;
const iteratro是一个指向容器的常迭代器,自身是个常量,一旦赋值,不能改变其指向的直;
6:迭代器和指针的差别
指针其实是狭义的迭代器,迭代器是指针的抽象。指针用于指向单个对象,而迭代器用于访问容器内的元素。
迭代器是具有类似指针行为的class template。也就是重载了operator-> operator* operator++等操作符的类模板。
由于指针的使用可能产生不可预料的过程,所以在现代的C++中采用vecator和interator代替一般的数组,string类型代替一般的字符串。C++中更偏向于使用容器类。
7:地雷:任何改变vector长度的操作都会使已存在的迭代器失败。例如,在调用push_back之后,就不能再信赖指向vector的迭代器的值了
2:每个容器都有自己的iterator类型,如vector<int>::iterator
3:begin和end操作,begin()返回迭代器的第一个元素,end()返回容器最后一个元素的下一个元素,如果vector为空,则begin返回的迭代器于end相同。
4:迭代器的使用类似于指针,可以经行解引用,加减,相等等操作
5:迭代器的类型:const_iterator和const iterator
const_iterator是一个指向常容器的迭代器,自身是个变量,但是指向的直不能改变;
const iteratro是一个指向容器的常迭代器,自身是个常量,一旦赋值,不能改变其指向的直;
6:迭代器和指针的差别
指针其实是狭义的迭代器,迭代器是指针的抽象。指针用于指向单个对象,而迭代器用于访问容器内的元素。
迭代器是具有类似指针行为的class template。也就是重载了operator-> operator* operator++等操作符的类模板。
由于指针的使用可能产生不可预料的过程,所以在现代的C++中采用vecator和interator代替一般的数组,string类型代替一般的字符串。C++中更偏向于使用容器类。
7:地雷:任何改变vector长度的操作都会使已存在的迭代器失败。例如,在调用push_back之后,就不能再信赖指向vector的迭代器的值了