慎用stl中的erase的返回值
生活随笔
收集整理的這篇文章主要介紹了
慎用stl中的erase的返回值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在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++);問題就解決了!
轉載于:https://www.cnblogs.com/xiaoshen555/p/3854082.html
總結
以上是生活随笔為你收集整理的慎用stl中的erase的返回值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2018信用卡贷款平台哪些值得办?平台大
- 下一篇: 中国银行长城万事达卡莫奈世界卡怎么样?精