本篇文章给大家分享的是有关C++中如何使用迭代器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
我们提供的服务有:网站制作、成都网站制作、微信公众号开发、网站优化、网站认证、尼木ssl等。为上千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的尼木网站制作公司
标准库为每一种标准容器(包括 vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更通用化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素,即使对支持下标操作的 vector 类型也是这样。
容器的 iterator 类型
每种容器类型都定义了自己的C++迭代器类型,如 vector:vector
begin 和 end 操作每种容器都定义了一对命名为 begin 和 end 的函数,用于返回迭代器。如果容器中有元素的话,由 begin 返回的迭代器指向***个元素: vector
上述语句把 iter 初始化为由名为 vector 操作返回的值。假设 vector 不空,初始化后,iter 即指该元素为ivec[0]。
由 end 操作返回的C++迭代器指向 vector 的“末端元素的下一个”。“超出末端迭代器”(off-the-end iterator)。表明它指向了一个不存在的元素。如果 vector 为空,begin 返回的迭代器与 end 返回的迭代器相同。
由 end 操作返回的迭代器并不指向 vector 中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完 vector 中所有元素。
vector 迭代器的自增和解引用运算
C++迭代器类型定义了一些操作来获取迭代器所指向的元素,并允许程序员将迭代器从一个元素移动到另一个元素。迭代器类型可使用解引用操作符(dereference operator)(*)来访问迭代器所指向的元素:
*iter = 0;
解引用操作符返回迭代器当前所指向的元素。假设 iter 指向 vector 对象 ivec 的***元素,那么 *iter 和ivec[0] 就是指向同一个元素。上面这个语句的效果就是把这个元素的值赋为 0。迭代器使用自增操作符(1.4.1 节)向前移动迭代器指向容器中下一个元素。从逻辑上说,C++迭代器的自增操作和int 型对象的自增操作类似。对 int 对象来说,操作结果就是把 int 型值“加 1”,而对迭代器对象则是把容器中的迭代器“向前移动一个位置”。因此,如果 iter 指向***个元素,则 ++iter 指向第二个元素。
由于 end 操作返回的迭代器不指向任何元素,因此不能对它进行解引用或自增操作。
示例程序:编写程序来创建有10个元素的vector对象
#include#include using namespace std;int main() { //定义并赋值输出 vector ivec; cout<<"Befort *2 the elements are:"< ::size_type ix=0; ix!=10;++ix){ ivec.push_back(ix); cout< ::iterator iter=ivec.begin(); iter!=ivec.end();++iter) { *iter*=2; cout<<*iter<<'\t'; } return 0; }
以上就是C++中如何使用迭代器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。