网站建设与制作视频教学,seo优化策略,设计色彩的门户网站模板,登尼特网站建设服务迭代器是一种检查容器内元素并遍历元素的数据类型。 标准库为每一种标准容器#xff08;包括 vector#xff09;定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法#xff1a;所有的标准库容器都定义了相应的迭代器类型#xff0c;而只有少数的容器支持下标… 迭代器是一种检查容器内元素并遍历元素的数据类型。 标准库为每一种标准容器包括 vector定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法所有的标准库容器都定义了相应的迭代器类型而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用现代 C 程序更倾向于使用迭代器而不是下标操作访问容器元素即使对支持下标操作的 vector 类型也是这样。 容器的 iterator 类型 每种容器类型都定义了自己的迭代器类型如 vectorvectorint::iterator iter;这符语句定义了一个名为 iter 的变量它的数据类型是 vectorint 定义的 iterator 类型。每个标准库容器类型都定义了一个名为 iterator 的成员这里的 iterator 与迭代器实际类型的含义相同。begin 和 end 操作每种容器都定义了一对命名为 begin 和 end 的函数用于返回迭代器。如果容器中有元素的话由 begin 返回的迭代器指向第一个元素 vectorint::iterator iter ivec.begin(); 上述语句把 iter 初始化为由名为 vector 操作返回的值。假设 vector 不空初始化后iter 即指该元素为 ivec[0]。 由 end 操作返回的迭代器指向 vector 的“末端元素的下一个”。“超出末端迭代器”off-the-end iter ator。表明它指向了一个不存在的元素。如果 vector 为空begin 返回的迭代器与 end 返回的迭代器相同。 由 end 操作返回的迭代器并不指向 vector 中任何实际的元素相反它只是起一个哨兵sentinel的作用 表示我们已处理完 vector 中所有元素。 vector 迭代器的自增和解引用运算 迭代器类型定义了一些操作来获取迭代器所指向的元素并允许程序员将迭代器从一个元素移动到另一个元素。 迭代器类型可使用解引用操作符dereference operator*来访问迭代器所指向的元素 *iter 0;
解引用操作符返回迭代器当前所指向的元素。假设 iter 指向 vector 对象 ivec 的第一元素那么 *iter 和 ivec[0] 就是指向同一个元素。上面这个语句的效果就是把这个元素的值赋为 0。 迭代器使用自增操作符1.4.1 节向前移动迭代器指向容器中下一个元素。从逻辑上说迭代器的自增操作和 int 型对象的自增操作类似。对 int 对象来说操作结果就是把 int 型值“加 1”而对迭代器对象则是把容 器中的迭代器“向前移动一个位置”。因此如果 iter 指向第一个元素则 iter 指向第二个元素。 由于 end 操作返回的迭代器不指向任何元素因此不能对它进行解引用或自增操作。 示例程序编写程序来创建有10个元素的vector对象用迭代器把每个 Code#include iostream#include vectorusing namespace std;int main(){ //定义并赋值输出 vectorint ivec; coutBefort *2 the elements are:endl; for(vectorint::size_type ix0;ix!10;ix){ ivec.push_back(ix); coutivec[ix]\t; } //把每个值乘以2并输出 coutendlAfter *2 the elements are:endl; for(vectorint::iterator iterivec.begin();iter!ivec.end();iter){ *iter*2; cout*iter\t; } return 0;} 转载于:https://www.cnblogs.com/wyj553/archive/2009/05/31/1492760.html