map multimap

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

map multimap的相关操作

m.insert(map<T1,T2>::value_type(a1,a2));
m.insert(make_pair(a1,a2));
m.insert(pair<T1,T2>(a1,a2));
a[a1]=a2;                                //multimap不能用这种方式
m.find(val)              //查找元素,返回迭代器
m.erase(key)             //通过key删除元素
m.erase(it)              //通过迭代器删除元素
m.erase(it1,it2)         //删除迭代器范围内的元素

学习代码


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

using namespace std;

int main()
{
    map<int, string> a;  //键不能重复,默认按升序排序
    multimap<int, string> ma;
    a.insert(map<int, string>::value_type(1, "One"));
    a.insert(map<int, string>::value_type(1, "one"));
    a.insert(map<int, string>::value_type(2, "Two"));
    a.insert(map<int, string>::value_type(3, "Three"));
    a.insert(make_pair(-1, "Minus One"));
    a.insert(pair<int, string>(1000, "One Thousand"));
    a[1000000] = "One Million";//multimap不能用这种方式

    cout << "最简单那的查找" << endl;
    cout << a[3] << endl;

    cout << "map里一共有" << a.size() << "个kye-value对数据" << endl;
    map<int, string>::const_iterator it = a.begin();
    while (it != a.end())
    {
        cout << "key" << it->first ;
        cout << " value" << it->second.c_str();
        cout << endl;
        ++it;

    }

    ma.insert(multimap<int, string>::value_type(3, "Three"));
    ma.insert(multimap<int, string>::value_type(45, "Forty Five"));
    ma.insert(make_pair(-1, "Minus one"));
    ma.insert(pair<int, string>(1000, "One Thousand"));
    ma.insert(pair<int, string>(1000, "One Thousand"));

    multimap<int, string>::const_iterator itm = ma.begin();
    while (itm != ma.end())
    {
        cout << "key:" << itm->first;
        cout << " value:" << itm->second.c_str();
        cout << endl;
        ++itm;
    }
    cout << "multimap里有" << ma.count(1000) << "个1000" << endl;

    multimap<int, string>::const_iterator fi;
    fi=ma.find(45);
    if (fi != ma.end())
    {
        cout << "找到了" << fi->first<<"  "<<fi->second.c_str()<< endl;
    }
    else
    {
        cout << "没找到" << endl;
    }

    fi = ma.find(1000);
    if (fi != ma.end())
    {
        cout << "找到了1000" << endl;
        size_t n = ma.count(1000);
        for (size_t i = 0; i < n; i++)
        {
            cout << "key:" << fi->first << "value:" << fi->second.c_str() << endl;
            ++fi;
        }
    }
    else {
        cout << "没找到" << endl;
    }

    if (ma.erase(-1) > 0)
        cout << "删除-1成功" << endl;

    multimap<int, string>::iterator itm2 = ma.find(45);
    if (itm2 != ma.end())
    {
        ma.erase(itm2);
        cout << "删除45成功" << endl;
    }

    ma.erase(ma.lower_bound(1000), ma.upper_bound(1000));//迭代器

    getchar();
    return 0;

}

C++ map multimap的更多相关文章

  1. STL中的map/multimap小结

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

  2. STL:map/multimap用法详解

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

  3. iBinary C++STL模板库关联容器之map/multimap

    目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...

  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. STL之六:map/multimap用法详解

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

  7. STL之map&multimap使用简介

    map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...

  8. STL——容器(Map & multimap)的删除

    Map & multimap 的删除 map.clear();           //删除所有元素 map.erase(pos);      //删除pos迭代器所指的元素,返回下一个元素的 ...

  9. STL——容器(Map & multimap)的大小

    1. Map & multimap 的大小 map.size();     //返回容器中元素的数目 map.empty();//判断容器是否为空, 容器中有内容将会返回 false 代码示例 ...

随机推荐

  1. myeclipse自动保存修改代码

    当你修改过代码后,myeclipse往往要你手动的保存代码才能运行这个修改后的代码,要是不保存就会一直运行修改前的代码.只要修改myeclipse中这两项,就可以让它编译运行修改后的代码: Windo ...

  2. 修改文件的所有者失(chown: changing ownership of `uploads': Operation not permitted)

    在项目开发的时候,经常需要将文件上传到指定的目录下. 例如这次用thinkphp5的时候,需要在public目录下建立uploads目录用于存放上传的资源. 首先在命令窗口下输入: mkdir upl ...

  3. SSH框架的多表查询和增删查改 (方法一)中

    原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html   这边文章是接的刚刚前一遍的基础上敲的  ...

  4. empty()和remove()的区别

    这两个都是删除元素,但是两者还是有区别的. remove()这个方法呢是删除被选元素的所有文本和子元素,当然包括被选元素自己. 而empty()呢,被选元素自己是不会被删除的. 比如: <div ...

  5. 基于HTML5的WebGL经典3D虚拟机房漫游动画

    第一人称在 3D 中的用法要参考第一人称在射击游戏中的使用,第一人称射击游戏(FPS)是以第一人称视角为中心围绕枪和其他武器为基础的视频游戏类型 ; 也就是说,玩家通过主角的眼睛来体验动作.自从流派开 ...

  6. UNIX标准及实现

    UNIX标准及实现 引言     在UNIX编程环境和C程序设计语言的标准化方面已经做了很多工作.虽然UNIX应用程序在不同的UNIX操作系统版本之间进行移植相当容易,但是20世纪80年代UNIX版本 ...

  7. 2)C语言的基本知识(C自考学习)

    字符集 在C语言程序中允许出现的所有基本字符的组合称为C语言的字符集.C语言的字符集就是ASCII字符集.主要包含一下几类: 1)大小写英文字母A~Z,a~z(52个) 2)数字0-9(10个) 3) ...

  8. 使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架

    一.本文将分享如何快速搭起基于webpack+vue的前端项目框架,利用vue的自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架.下面是 ...

  9. MD5摘要算法简析

    1 MD5简介 1.1  概述 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主 ...

  10. Rigidbody组件及相关API

    Rigidbody:刚体组件,物理类.(与Rigidbody组件相关的代码尽量都写在FixedUpdate()方法中,如果写在Update()中有可能会卡顿) 属性:Mass:质量.         ...