C++11——const_iterator

  C++中有一个原则:只要有可能,就应该使用const。const_iterator是STL中指涉到const指针的等价物,指涉到不可被修改的值。任何时候只要我们需要一个迭代器而且其指涉的内容没有必要修改,我们就应该使用const_iterator。

  在C++98中,const_iterator得到的支持不够全面。建立它们不容易,而且建立好了后使用方法也受限。比如说我们想要在vector中插入数据,按照C++的原则如果我们不需要改动数值那么就把内容设置成为const,但是插入操作只能接受iterator,而且iterator不论在哪个版本的C++都不能强制转换成const_iterator。

  C++11中对这种情况做了改善。获取和使用const_iterator都变得容易了。容器的成员函数cbegin和cend都返回const_iterator型别,甚至对于非cosnt容器也是如此,并且STL成员函数若要取用指示位置的迭代器,它们也要求使用const_iterator型别。

  所以我们要优先选用const_iterator而不是iterator。

  只有在我们撰写最通用化的库代码的时候,const_iterator的支持才显得不充分。因为这些代码会考虑到某些容器或类似容器的数据结构,会以非成员函数的方式提供begin和end(还有cbegin、cend、rbegin等),而不是成员函数的方式。这就是内建数组的情况,也是某些仅以自由函数形式提供接口的第三方库的情况。这就是内建数组的情况,也是某些仅以自由函数形式提供接口的第三方库的情况。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值