C++map遍历删除数据(删除被2整除的键值对)

原创 2015年11月18日 00:15:30

C++使用迭代器遍历删除数据时 调用erase函数后,原先的迭代器不能使用了,故应该在之前先做处理。

以前关于遍历删除本人都是使用一个vector来存储相关的key后,然后再删除,不过这样的效率确实不高,被朋友提点有效率好点的方法后,试了下以前以为会出错的方法,也对关联类的迭代器有了进一步认识吧,对这个迭代器先做偏移,取原先迭代器的作为移除点事其实是可行的。

以下windows,linux都测试通过

/*author:  Jeson Yang
 date:	2015.11.18
 file:	****.cpp*/
#include <iostream>
#include <map>
using namespace std;

int main()
{
  map<int, int> *mapValue = new map<int, int>();
  mapValue->insert(make_pair(2, 1));
  mapValue->insert(make_pair(3, 1));
  mapValue->insert(make_pair(4, 1));
  for (std::map<int, int>::iterator it = mapValue->begin(); it != mapValue->end(); )
  {
    int key = it->first;
    if (key % 2 == 0)
    {
      mapValue->erase(it++);
    }
    else
    {
      ++it;
    }
  }

  for (std::map<int, int>::iterator it = mapValue->begin(); it != mapValue->end(); ++it)
  {
    cout << it->first << "  value = " << it->second << endl;
  }

  delete mapValue;
  mapValue = NULL;

  return 0;
}


 


 

by:Jeson Yang

 

相关文章推荐

C++:删除map元素,当value值为指针时,如何释放内存。

class A { ··· ···}; map stoaMap; 1)通过迭代器遍历删除 map::iterator iter = stoaMap.begin(); while(iter !=...
  • ttguess
  • ttguess
  • 2012年08月13日 16:24
  • 11441

c++ map删除元素的三种方式

删除键为bfff指向的元素 cmap.erase("bfff"); 删除迭代器 key所指向的元素 map::iterator key = cmap.find("Anna"); if(key...

c++ 关于map的遍历 删除

begin 是指向第一个元素,end指向最后一个元素的下一个元素。 [cpp] view plaincopy int main(int argc, ch...

C++笔记:map键值类型,元素删除

键值类型: 在实现模板时,如果参数用到了map,则常需要使用map的键值类型: map::key_type 在map容器内,用做索引的键的类型  map::mapped_type 在map容器中,键...

c++ 关于map的遍历 删除

int main(int argc, char* argv[]) { map mapData; mapData["a"] = "aaa"; mapData["b"]...

Java 中list和map遍历删除

ListJAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。for循环遍历listfor(int i=0;i...

stl map遍历和删除的方法

for(;iter!=mapStudent.end();) {      if((iter->second)>=aa)      {          //满足删除条件,删除当前结点,并指向下...

std::map 通过遍历删除满足某些条件元素的两种方式

方法一: [cpp] view plain copy std::map mapTest;   bool TestVal(const std::st...

C++ map正确的遍历删除方法

int main(int argc, char* argv[]) { map mapData; mapData["a"] = "aaa"; ma...

std::map 再学习

1. map中的元素其实就是一个pair.2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.3. map是个无序的容器, 而vect...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++map遍历删除数据(删除被2整除的键值对)
举报原因:
原因补充:

(最多只允许输入30个字)