码迷,mamicode.com
首页 > 其他好文 > 详细

慎用stl中的erase的返回值

时间:2014-07-19 15:29:47      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:style   io   for   问题   cti   re   

在windows下的VC编译或者Mac OX的XCode下编译也许不会出问题。但是在linux下可能就会挂掉。

比如我上一篇里的poj4093出现了编译错误

2007120.8890/Main.cc: In function ‘int main()’:
2007120.8890/Main.cc:50:44: error: no match for ‘operator=’ in ‘itr1 = a.std::set<_Key, _Compare, _Alloc>::erase [with _Key = int, _Compare = std::less<int>, _Alloc = std::allocator<int>, std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree_const_iterator<int>](itr1)’
/usr/include/c++/4.5/bits/stl_tree.h:224:5: note: candidate is: std::_Rb_tree_const_iterator<int>& std::_Rb_tree_const_iterator<int>::operator=(const std::_Rb_tree_const_iterator<int>&)


将itr1 = a.erase(itr1);// 这个地方有bug

改成了a.erase(itr1++);问题就解决了!

慎用stl中的erase的返回值,布布扣,bubuko.com

慎用stl中的erase的返回值

标签:style   io   for   问题   cti   re   

原文地址:http://www.cnblogs.com/xiaoshen555/p/3854082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!