怎么把const_iterator强制转化成iterator
来源:互联网 发布:淘宝宝贝卖点有什么用 编辑:程序博客网 时间:2024/04/30 03:22
今天在使用STL中的mutilmap时遇到了一个比较郁闷的问题,STL的一些函数只能接受iterator作为参数,不能传const_iterator类型的参数,既不存在两种迭代器的隐式转换,使用const_cast也是不行的,编译怎么也通不过,看stl的源码const_iterator和iterator两个之间还真没啥血缘关系,在网上搜索了一下资料,然来STL也考虑了这一问题,使用了一个折衷的方法来解决这一问题,使用迭代器<iterator>里面的advance和distance这两个函数来完成这件事情,原理很简单,首先将iterator指向容器的开始位置,然后把它向前移到和const_iterator距离容器起始位置的偏移量一样的位置就可以了,代码如下:
注意distance这个模板函数,应该显示指定参数类型,否则可能不能通过编译,因为计算距离的时候,函数必须知道你的类型是什么才能正确计算距离。有时候编译器可以通过模板演绎推出参数类型,但这里不行,要显示指定。
建议:尽量避免这种转换的发生,这不是一种漂亮的编程方法,虽然是被STL支持的。
- 怎么把const_iterator强制转化成iterator
- iterator const_iterator
- const_iterator 与 const iterator
- const_iterator转iterator
- iterator与const_iterator
- iterator与const_iterator
- const_iterator 和 const..iterator
- iterator与const_iterator
- const iterator与const_iterator
- iterator与const_iterator
- iterator与const_iterator
- const iterator与const_iterator
- const iterator和const_iterator
- iterator与const_iterator区别
- const_iterator与const iterator
- c++ iterator const_iterator
- iterator, const_iterator 与 const iterator
- iterator,const_iterator,const iterator区别
- sctp编程
- Unsolved problem about ant(Solved now!)
- 观察者模式与Boost.Signals
- 只有掏空老百姓,才能最后富了“中国”
- 闭关修炼中
- 怎么把const_iterator强制转化成iterator
- ie下Extjs报错el.owner.createDocument.createRange Object doesn't support this property or method解决办法
- [转]C++中头文件相互包含的几点问题
- java io (二)
- 操作系统复习笔记(2)
- Ajax---发送参数:使用JSON替代XML向服务器发送数据
- 不用代理实现弹出进度条窗体
- 分怎么来呢?
- 木马的隐藏及其启动方式