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

 

MAP中删除所有vlaue值相同的键值对

问题描述:现在给定一个Map(hash_map),其key=string,value = int,string是唯一,value值可能相同,现在需要删掉map中所有value值相同的键值对,一个不留。...
  • zr1076311296
  • zr1076311296
  • 2016年06月14日 15:51
  • 1448

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

键值类型: 在实现模板时,如果参数用到了map,则常需要使用map的键值类型: map::key_type 在map容器内,用做索引的键的类型  map::mapped_type 在map容器中,键...
  • qdx411324962
  • qdx411324962
  • 2015年03月25日 11:51
  • 3511

std::map 删除指定条件的元素

在C++开发中,std::map是经常使用到的容器,由键值就可以取出对应的值。 在使用map时,如果想从map中删除符合某一条件的元素,应该如何操作?...
  • u011417605
  • u011417605
  • 2016年03月12日 11:12
  • 2492

C++ map以自定义数据类型做键值

前言 作者最近在项目开发中遇到一个问题,想采用自定义的结构体作为键值,但是无论怎样,就连编译都不能通过,针对这个问题,作者就开始寻求解决的办法.。终于这个问题得以解决,高兴之余,决定写个例子,供大家...
  • nk_wang
  • nk_wang
  • 2015年02月14日 19:46
  • 1418

Map获取键值,Map的几种遍历方法

Map获取键值   Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象。         Map的接口         Map---实现M...
  • qq_34231193
  • qq_34231193
  • 2016年08月14日 12:37
  • 138

c++ 关于map的遍历 删除(转载)

原作者:c++ 关于map的遍历 删除[cpp] view plain copy print?int main(int argc, char* argv[])  {      map mapData;...
  • lwwl12
  • lwwl12
  • 2017年12月11日 13:44
  • 27

C++ STL 遍历 map 的时候如何删除其中的 element

首先看一段他人的一段文章:from: http://www.cnblogs.com/super119/archive/2011/10/11/2207541.html 我们通过map的erase(...
  • JoeBlackzqq
  • JoeBlackzqq
  • 2011年10月24日 11:20
  • 1560

c++ 关于map的遍历 删除

int main(int argc, char* argv[]) { map mapData; mapData["a"] = "aaa"; mapData["b"] = "bb...
  • Swimmy_GY
  • Swimmy_GY
  • 2016年08月17日 17:10
  • 145

c++ map的键值

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候...
  • aaakirito
  • aaakirito
  • 2017年07月28日 15:36
  • 115

STL: unordered_map 自定义键值类型的使用(C++)

当试图使用自定义类型作为 unordered_map 的键值时,则必须为自定义类型定义 Hash 函数与相等的判断条件。我们先定义自定义类型作键值,代码如下: struct KEY { int fi...
  • zhangpiu
  • zhangpiu
  • 2015年11月14日 17:45
  • 5615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++map遍历删除数据(删除被2整除的键值对)
举报原因:
原因补充:

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