定义:迭代器是一种检查容器内元素并遍历元素的数据类型。
1.迭代器用于容器。
2.标准库为每一种标准容器都定义了一种迭代器类型。
如 vector:vector<T>::iterator iter;
3.标准库没有为所有标准容器定义相应的下标操作。
总结:最好使用迭代器遍历容器。
begin 和 end 操作:
1.每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。
2. begin 返回的迭代器指向第一个元素。
3.end 返回的迭代器指向 vector 的“末端元素的下一个”。
4.如果 vector 为空,begin 返回的迭代器与 end 返回的迭代器相同。
使用示例:
for (vector<int>::iterator iter = ivec.begin(); iter != text.end(); ++iter)
*iter = 0; // set element to which iter refers to 0
const_iterator:与iterator基本相同。
区别:对 const_iterator 类型解引用时,得到一个指向 const 对象的引用,
即不能修改const_iterator指向的容器元素。
// 这是合法的
for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++iter)
cout << *iter << endl;
// 这样不合法
for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++iter)
*iter = " ";
迭代器的算术操作:
iter + n 计算结果:iterator
iter - n 计算结果:iterator
n的类型:size_type 或 difference_type 类型
iter1 - iter2 计算结果:difference_type