#include <iostream>
#include <map>
#include <string>

using namespace std;

int main()
{
  map<int, string> map1;
  multimap<int, string> multimap1;

  map1.insert(map<int,string>::value_type(1,"One"));
  map1.insert(map<int, string>::value_type(2, "Two"));
  map1.insert(map<int, string>::value_type(3, "Three"));
  map1.insert(make_pair(-1,"Minus One"));
  map1.insert(pair<int,string>(1000,"Four"));
  map1[100] = "Five";

  cout << "map1 size:" << map1.size() << endl;
  map<int, string>::const_iterator map_iter;
  for (map_iter =map1.begin();map_iter !=map1.end();++map_iter)
  {
    cout << "key:" << map_iter->first << " value:" << map_iter->second.c_str() << endl;
  }

  cout << "---------------------------"<< endl;

  multimap1.insert(multimap<int,string>::value_type(1,"One"));
  multimap1.insert(multimap<int, string>::value_type(1, "One"));
  multimap1.insert(multimap<int, string>::value_type(2, "Two"));
  multimap1.insert(pair<int,string>(2,"Test"));
  multimap1.insert(pair<int,string>(2,"Test2"));
  multimap1.insert(make_pair<int,string>(3,"Test"));

  cout << "multimap size:" << multimap1.size() << endl;
  multimap<int, string>::const_iterator multimap_iter;
  for (multimap_iter = multimap1.begin();multimap_iter != multimap1.end();++multimap_iter)
  {
    cout << "key:" << multimap_iter->first << " value:" << multimap_iter->second.c_str() << endl;
  }

  cout << "element count:" << multimap1.count(1) << endl;

  cout << "-----------------------------------------" << endl;
  multimap<int, string>::const_iterator iter2;
  iter2 = multimap1.find(2);
  if (iter2 != multimap1.end())
  {
    size_t element_count = multimap1.count(2);
    for (int k=0;k<element_count;k++)
    {
      cout << "find: "<<k<<" " << iter2->first << " " << iter2->second.c_str() << endl;
      ++iter2;
    }
    
  }
  else
  {
    cout << "not found..." << endl;
  }

  cout << "---------------------------------------------"<<endl;
  if (multimap1.erase(2)>0)
  {
    cout << "delete element success..."<<endl;
  }
  multimap<int, string>::const_iterator multimap_iter1;
  for (multimap_iter1 = multimap1.begin(); multimap_iter1 != multimap1.end(); ++multimap_iter1)
  {
    cout << "key:" << multimap_iter1->first << " value:" << multimap_iter1->second.c_str() << endl;
  }
  cout << "---------------------------------------------" << endl;
  multimap<int, string>::iterator iter3 = multimap1.find(1);
  if (iter3 != multimap1.end())
  {
    size_t element_count = multimap1.count(1);
    for (int k=0;k<element_count;k++)
    {
      iter3 = multimap1.find(1);
      multimap1.erase(iter3);
      //++iter3;
      cout << "delete success..." << endl;
    }
  }
  cout << "---------------------------------------------" << endl;
  multimap<int, string>::const_iterator multimap_iter2;
  for (multimap_iter2 = multimap1.begin(); multimap_iter2 != multimap1.end(); ++multimap_iter2)
  {
    cout << "key:" << multimap_iter2->first << " value:" << multimap_iter2->second.c_str() << endl;
  }

  system("pause");
  return 0;
}

======================================

map1 size:6
key:-1 value:Minus One
key:1 value:One
key:2 value:Two
key:3 value:Three
key:100 value:Five
key:1000 value:Four
---------------------------
multimap size:6
key:1 value:One
key:1 value:One
key:2 value:Two
key:2 value:Test
key:2 value:Test2
key:3 value:Test
element count:2
-----------------------------------------
find: 0 2 Two
find: 1 2 Test
find: 2 2 Test2
---------------------------------------------
delete element success...
key:1 value:One
key:1 value:One
key:3 value:Test
---------------------------------------------
delete success...
delete success...
---------------------------------------------
key:3 value:Test
请按任意键继续. . .

c++ map multimap操作的更多相关文章

  1. STL中的map/multimap小结

    (1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...

  2. C++ map multimap

    map multimap map,multimap key-value对容器,也叫字典,map中不能存放key相同的元素,而multimap可以,容器中元素默认按升序排序 map multimap的相 ...

  3. STL:map/multimap用法详解

    map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...

  4. 09--STL关联容器(map/multimap)

    一:map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...

  5. c/c++ 标准库 map multimap元素访问

    标准库 map multimap元素访问 一,map,unordered_map下标操作 下标操作种类 功能描述 c[k] 返回关键字为k的元素:如果k不在c中,添加一个关键字为k的元素,并对其初始化 ...

  6. map && multimap

    map map 的意思是映射.用法一般是     map<char, int>mp 按照我的理解,map 类似于一个高级的数组.前面的数据类型 char 相当于下脚标,而数组元素的值就对应 ...

  7. STL::map/multimap

    map: 默认根据 key 排序(从小到大),能够通过 backet operator(operator [ ]) 来获取元素,内部由二叉搜索树来实现(binary search trees). mu ...

  8. STL之六:map/multimap用法详解

    转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...

  9. STL——容器(Map & multimap)的拷贝构造与赋值

    1. Map & multimap 的拷贝构造与赋值 map(const map &mp);               //拷贝构造函数 map& operator=(con ...

随机推荐

  1. linux命令详解——eval

    shell中的eval 功能说明:重新运算求出参数的内容. 语 法:eval [参数] 补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行. 参 数:参数不限数目,彼此之间用分号分开. ...

  2. 14.Vue组件

    1.定义Vue组件 什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可: 组件化和模块化的不 ...

  3. 分析可变形字符串序列StringBuilder 以及 StringBuffer之默认大小与扩容

    默认值初始化: 1.  首先明确 StringBuffer类与 StringBuilder类均继承了抽象类 AbstractStringBuilder类 无参构造方法 2. 源码中StringBuff ...

  4. XPath 爬虫解析库

    XPath     XPath,全称 XML Path Language,即 XML 路径语言,它是一门在 XML 文档中查找信息的语言.最初是用来搜寻 XML 文档的,但同样适用于 HTML 文档的 ...

  5. mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理

    https://blog.csdn.net/muziljx/article/details/81541896 MySQL版本5.7.6版本开始的用户可以使用如下命令: mysql> ALTER ...

  6. vue开发记录

    vue开发过程中遇到的一些小问题.小技巧等,会不断更新~ 记录不详细处,欢迎留言

  7. 浅谈JavaScript严格模式(use strict)

    "use strict" 的目的是指定代码在严格条件下执行. 严格模式下你不能使用未声明的变量. 严格模式声明 严格模式通过在脚本或函数的头部添加 "use strict ...

  8. 一些有用的dll

    1.生成excel工具- EPPlus EPPlus.dll 2.生成word工具 - OpenXml DocumentFormat.OpenXml.dll 3.生成条形码工具 -  ZXing zx ...

  9. 利用chrome console批量下载文件

    因工作需要,需要定期从某页面下载多个文档,是体力活. 想用chrome扩展,找了几个不行.原因是: 1.有的扩展识别不了链接,因为链接是形如:jsp?XXX=XXX的形式 2.有的扩展能批量打开链接, ...

  10. Luogu5298 [PKUWC2018]Minimax

    太久没写博客了,过来水一发. 题目链接:洛谷 首先我们想到,考虑每个叶节点的权值为根节点权值的概率.首先要将叶节点权值离散化. 假设现在是$x$节点,令$f_i,g_i$分别表示左/右节点的权值$=i ...