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. HTML5与搜索引擎优化[转载]

    原文:http://lusongsong.com/reed/398.html 我觉得HTML5的兴起完全是因为iPhone和iPad,自从Adobe停止开发flash.Android4.0不支持fla ...

  2. null transform hack 强制使用硬件加速

    -webkit-transform: translateZ(0); -webkit-transform: translate3d(0,0,0);   作用: 1.切换到硬件合成模式,通常所有事情都CP ...

  3. 泛型DAO

    最近正在学习泛型DAO,通过网上查阅资料,汇总并自己整理了一下.提前需要学习的知识java反射.泛型 用到的反射如下: Class<T>类 是java.lang包下,Class类的实例表示 ...

  4. 使用SQLPLUS创建用户名和表空间

    用sqlplus为oracle创建用户和表空间用sqlplus为oracle创建用户和表空间用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, ...

  5. 阿里云centos配置postfix

    1. 为了防止垃圾邮件,先到域名控制面板设置好. MX A 记录及TXT记录 其中TXT记录如下  @  spf1 a mx ~all 意思就是使用spf1协议,允许a记录和MX记录对应的IP,不允许 ...

  6. EM 算法求解高斯混合模型python实现

    注:本文是对<统计学习方法>EM算法的一个简单总结. 1. 什么是EM算法? 引用书上的话: 概率模型有时既含有观测变量,又含有隐变量或者潜在变量.如果概率模型的变量都是观测变量,可以直接 ...

  7. 学python+django去北京找工作,靠谱吗?

    有些朋友说,自己的学习能力还可以.倾向于python加框架,如django,python本来就会一些.不太了解北京公司的情况,想知道现学的python+django在北京找到工作有多少可能性. 要想知 ...

  8. Transact-SQL知识点梳理

    Transact-SQL基础语言 运行环境:SQL Server 语法约定: 语法约定 用途说明 大写字母 Transact-SQL关键字 斜体 用户提供的Transact-SQL语法参数 粗体 数据 ...

  9. [转载] ZooKeeper原理及使用

    转载自http://www.wuzesheng.com/?p=2609 ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordina ...

  10. 自动化部署必备技能—部署yum仓库、定制rpm包

    部署yum仓库.定制rpm包 目录 第1章 扩展 - yum缓存 1.1 yum缓存使用步骤... 1 1.1.1 导言... 1 1.1.2 修改配置文件... 1 1.1.3 使用缓存... 1 ...