读书人

迭代器怎么转型

发布时间: 2012-03-27 13:44:24 作者: rapoo

迭代器如何转型?
如果是一个常量的迭代器类型,如何把常量转换从而可以赋给一个变量的迭代器呢?
编译说要用其定义的操作符,我不知道定义的是哪个啊.

[解决办法]
假如你有一个deque和一个该deque的const_iterator如下

C/C++ code
    deque<int> d;    deque<int>::const_iterator citr;
[解决办法]
const_iterator不能直接转为iterator,要得到与const_iterator相对应的iterator,需要使用distance和advance
例子如下:
C/C++ code
typedef deque<int> IntDeque;              typedef IntDeque::iterator Iter;typedef IntDeque::const_iterator ConstIter;IntDeque  d;ConstIter ci; //一个const_iteratorIter i(d.begin());                          // 初始化i为d.begin()advance(i, distance<ConstIter>(i, ci));         // 把i移到指向ci位置 

读书人网 >C++

热点推荐