读书人

迭代器+迭代器 容许啊

发布时间: 2013-12-21 20:16:01 作者: rapoo

迭代器+迭代器 允许啊?
看c++ primer version 4 ,P269
iter1 += iter2 //请假下这个是嘛意思 ?
[解决办法]
试了一下,vs2005下编译报错。说上说这个操作符只能用于vector和deque容器,而且这两个迭代器要指向同一个容器中的元素。
[解决办法]

引用:
这么经典的书是翻译错了还是原版错了阿 ?
还有下面的也错误了吧?




避免存储end操作返回的迭代器,如下面代码,该段代码将导致死循环,问题在于这个程序将end操作返回的迭代器值存储在名为last的局部变量中,循环体中实现了元素的添加运算,添加元素会使得存储在last中的迭代器失效。

[cpp] view plaincopy

vector<int>::iterator first=v.begin(),last=v.end();

while(first!=last){
first=v.insert(first,32);
++first;
}

为了避免存储end迭代器,可以在每次做完插入运算后重新计算end迭代器值:

[cpp] view plaincopy

while(first!=v.end()){
first=v.insert(first.42);
++first;
}

这一段没有错啊,你怎么感觉错了呢? 第一段代码的确是迭代器已经失效了。 而第二个似乎也是死循环,
我看了下书,第二个你在insert(first, 42); 中你少抄了一个++,实际是:insert(++first, 42);

读书人网 >C++

热点推荐