请教std::list 发向插入

suigui 2008-03-06 05:57:42
MyList::reverse_iterator rit = lMyListList.rbegin();
for ( ; rit != lMyListList.rend(); rit++)
{
// 条件判断
// 这个时候我怎么在rit处插入呢?
// 像 lPacketList.insert( it, pb ); 这样.
}
thanks!!!
...全文
250 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenyi3315 2008-03-06
  • 打赏
  • 举报
回复
有多个地方插入的时候应该这样
 
for ( ; rit != iv.rend(); rit++)
{
if(3==*rit)
{
iv.insert(rit.base(),8);
rit++;
}
}

suigui 2008-03-06
  • 打赏
  • 举报
回复
yes!thanks!!!!代码胜过千言万语!!!!!!!!!!!!
hastings 2008-03-06
  • 打赏
  • 举报
回复
int main()
{
int a[5]={1,2,3,4,5};
std::list<int> iv(a,a+5);
std::copy(iv.begin(),iv.end(),std::ostream_iterator<int>(cout," "));
cout<<'\n';
std::list<int>::reverse_iterator rit = iv.rbegin();
for ( ; rit != iv.rend(); ++rit)
{
if(3==*rit)
{
iv.insert(rit.base(),8);
break;
}
}
std::copy(iv.begin(),iv.end(),std::ostream_iterator<int>(cout," "));
cout<<'\n';
return 0;
}
suigui 2008-03-06
  • 打赏
  • 举报
回复
没有人知道吗?代码就那么简单,我从后(反向)遍历链表,然后在匹配位置出插入新的元素。如果按你那么插,错误提示就是reverse_iterator不能转换成iterator类型.
hityct1 2008-03-06
  • 打赏
  • 举报
回复
我记得stl中有把反向迭代器转化为正向迭代器的方法。
在 《c++标准程序库》侯捷译 中有,我没用过。也许能用。
北极猩猩 2008-03-06
  • 打赏
  • 举报
回复
楼主,直接插入理论上是没有错的,你最好把你的错误信息和更多的代码贴上来,错误不是像你想象的那样单纯。
visame 2008-03-06
  • 打赏
  • 举报
回复

同意楼上的。
注意返回的是指向该元素的iterator.
iterator insert ( iterator position, const T& x );
list的erase还有两种形式:
void insert ( iterator position, size_type n, const T& x );
template <class InputIterator>
void insert ( iterator position, InputIterator first, InputIterator last );
suigui 2008-03-06
  • 打赏
  • 举报
回复
IMyListList.insert(rit, pb);这不行的,参数类型都不对。。请认真看看好不好。。要能行我也不来这问了。
北极猩猩 2008-03-06
  • 打赏
  • 举报
回复
和正向的iterator没有什么区别啊

IMyListList.insert(rit, pb)
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-06 05:57
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下