正文

何时使用常量迭代器2009-08-09 16:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/manbuyuduan/46332.html

分享到:

何时使用常量迭代器(const_iterator)

CODE
你是否疑惑,为什么C++标准化委员会使用常量迭代器(const_iterator)代替常量迭代型(const iterator)?为什么不用const_iterator代替 const iterator ?


原因很简单:常量迭代器不是常量迭代型。这意味着你能够改变常量迭代器的长度(例如:用++来增加长度)。然而,你不能改变常量迭代器所指向的对象的值。

让我们进一步阐明一下。如果你把迭代器考虑成指向T的指针,那么常量迭代器不是指向T的常量指针,而是指向常量T的非常量指针。

在接下来的例子中,常量迭代器的长度成功地增加了。而另一方面,想要通过迭代器,而改变其中的元素值的企图却失败了,因为它是常量迭代器。

std::vector<double> results;

results:push_back(98.99);

results:push_back(86.33);

std::vector<double>::const_iterator it = vi.begin();

++it; //正确,改变迭代器,而不是其中的元素

*it = 100.5; //错误,不能用const_iterator改变其中元素

总之,const_iterator的使用者,不允许通过其迭代器,而改变其指向的元素值。

阅读(1609) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册