首页 > 其他 > 详细

map遍历元素删除

时间:2014-03-23 18:50:13      阅读:622      评论:0      收藏:0      [点我收藏+]

map遍历删除元素与vector和list遍历删除不一样:

直接上代码:

template<typename T>
void vecDelElem(vector<T> *vect, T elem)
vector遍历删除正确方法:

bubuko.com,布布扣
 1 {
 2         typename vector<T>::iterator iter;
 3         for(iter=(*vect).begin(); iter!=(*vect).end(); )
 4         {
 5                 if(*iter == elem)
 6                 {
 7                         iter = (*vect).erase(iter);
 8                 }
 9                 else
10                 {
11                         iter++;
12                 }
13         }
14 }
bubuko.com,布布扣

 

所以联想到map的遍历删除,代码如下:

 

bubuko.com,布布扣
 1 for (map<pair<int, int>, vector<int> >::iterator iter = seqLinkMap.begin(); iter != seqLinkMap.end(); )
 2         {
 3                 if ( XXXXX )
 4                 {
 5                         iter = seqLinkMap.erase(iter);
 6                 }
 7                 else
 8                 {
 9                         iter++;
10                 }
11         }
bubuko.com,布布扣

 

编译一直报错:

error: no match for ‘operator=’ in ‘iter = seqLinkMap.std::map<_Key, _Tp, _Compare, _Alloc>::erase [with _Key = std::pair<int, int>, _Tp = std::vector<int>, _Compare = std::less<std::pair<int, int> >, _Alloc = std::allocator<std::pair<const std::pair<int, int>, std::vector<int> > >, std::map<_Key, _Tp, _Compare, _Alloc>::iterator = std::_Rb_tree_iterator<std::pair<const std::pair<int, int>, std::vector<int> > >](iter)’

原来根据STL std::map中的定义void erase(iterator pos),此erase并不返回下一个元素的迭代器,因此不能采用std::list的方法。

正确的方法是:

 

bubuko.com,布布扣
 1 for (map<pair<int, int>, vector<int> >::iterator iter = seqLinkMap.begin(); iter != seqLinkMap.end(); )
 2         {
 3                 if (XXXX)
 4                 {
 5                         seqLinkMap.erase(iter++);
 6                 }
 7                 else
 8                 {
 9                         iter++;
10                 }
11         }
bubuko.com,布布扣

map遍历元素删除,布布扣,bubuko.com

map遍历元素删除

原文:http://www.cnblogs.com/shijun-xiao/p/3619259.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!