迭代器:
迭代器是一种检查容器内元素并遍历的数据类型。
有的容器支持下标操作,有的不支持。vector支持下标操作。标准库为每一种标准容器都定义了一种迭代器。
vector<int> ::iterator text;
定义了一个名为text的变量。他的类型是vector<int>定义的iterator的类型。
解引用操作返回迭代器所指的当前的元素。*text=text[0];
每对容器都定义了一对begin和end函数,用于返回迭代器。由begin返回迭代器指向的第一个元素,end指向迭代器末端元素的下一个。对end指向的位置不能解引用和自增操作。
const _iterator:该类型只能用于读取迭代器指向的值,不能改变指向的值。
const 迭代器与const_iterator的区别:
const 迭代器是迭代器常量,该迭代器本身的值不能修改,即该迭代器在定义时 需要初始化,而且初始化之后,不能再指向其他元素。若需要指向固定元素的 迭代器,则可以使用const 迭代器。
const_iterator 是一种迭代器类型,对这种类型的迭代器解引用会得到一个指 向const对象的引用,即通过这种迭代器访问到的对象是常量。该对象不能修 改,因此,const_iterator 类型只能用于读取容器内的元素,不能修改元素的 值。若只需遍历容器中的元素而无需修改它们,则可以使用const_iterator。
vector<int> a(10);
const vector<int>::iterator s = a.begin();
*s = 9;//const迭代器定义的迭代器常量可以改变指向的值,但是不能指向其他的元素。
vector<int>::const_iterator b = a.begin();
*b = 9;//error,const_iterator类型的变量指向的值不能被改变
++b;
注意:任何改变容器长度的操作都会是使当前的迭代器失效。例如,调用push_back之后,就不能在信任迭代器返回的值。