C++ map multimap
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的更多相关文章
- STL中的map/multimap小结
(1)使用map/multimap之前必须包含头文件<map>:#include<map> 并且和所有的关联式容器一样,map/multimap通常以平衡二叉树来完成 (2)n ...
- STL:map/multimap用法详解
map/multimap 使用map/multimap之前要加入头文件#include<map>,map和multimap将key/value当作元素,进行管理.它们可根据key的排序准则 ...
- iBinary C++STL模板库关联容器之map/multimap
目录 一丶关联容器map/multimap 容器 二丶代码例子 1.map的三种插入数据的方法 3.map集合的遍历 4.验证map集合数据是否插入成功 5.map数据的查找 6.Map集合删除元素以 ...
- 09--STL关联容器(map/multimap)
一:map/multimap的简介 map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对.它提供基于key的快速检索能力. map中key值是唯一的.集合中的元素按一定的顺 ...
- c/c++ 标准库 map multimap元素访问
标准库 map multimap元素访问 一,map,unordered_map下标操作 下标操作种类 功能描述 c[k] 返回关键字为k的元素:如果k不在c中,添加一个关键字为k的元素,并对其初始化 ...
- STL之六:map/multimap用法详解
转载于:http://blog.csdn.net/longshengguoji/article/details/8547007 map/multimap 使用map/multimap之前要加入头文件# ...
- STL之map&multimap使用简介
map 1.insert 第一种:用insert函数插入pair数据 #include <map> #include <string> #include <iostrea ...
- STL——容器(Map & multimap)的删除
Map & multimap 的删除 map.clear(); //删除所有元素 map.erase(pos); //删除pos迭代器所指的元素,返回下一个元素的 ...
- STL——容器(Map & multimap)的大小
1. Map & multimap 的大小 map.size(); //返回容器中元素的数目 map.empty();//判断容器是否为空, 容器中有内容将会返回 false 代码示例 ...
随机推荐
- C++ 中memset 勿要对类使用
C++ 中memset 勿要对类使用 参考链接: http://www.cppblog.com/qinqing1984/archive/2009/08/07/92479.html 百度百科第一次这么给 ...
- CodeForces - 706B 二分stl
#include<iostream> #include<cstdio> #include<cstring> #include<string> #incl ...
- 用户需求与NABCD分析
用户需求与NABCD分析 目录 项目简介 用户需求分析 调研途径 问卷情况说明 问卷反馈与分析 NABCD分析 Need 需求 Approach 途径 Benefit 好处 Competitors 竞 ...
- Layui框架+PHP打造个人简易版网盘系统
网盘系统 大家应该都会注册过致命的一些网盘~如百度云.百科介绍:网盘,又称网络U盘.网络硬盘,是由互联网公司推出的在线存储服务,服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储. ...
- 68、django之session与分页
前面我们介绍了cookies,主要应用在用户登录上,保存用户登录状态,不过cookies直接放在了浏览器上,安全性较低,所以我们便引出了session功能与cookies相同,不同的是它放在了客户端, ...
- C# 可空引用类型
可空引用类型是C#8.0计划新增的一个功能,不过已经发布了预览版本,今天我们来体验一下可空引用类型. 安装 您必须下载Visual Studio 2017 15.5预览版(目前最新发布版本是15.4) ...
- 前端面试题(3) cookie,sessionStorage和localStorage的区别
cookie是网站为了标示用户身份存在用户本地终端上的数据(经过加密). cookie数据时钟在同源的http请求中携带(即使不需要),即会在浏览器和服务器之间传递. seeeionStorage和l ...
- 【分享】纯jQuery实现星巴克官网导航栏效果
前言 大冬天的没得玩,只能和代码玩. 所以就无聊研究了一下星巴克官网,在我看来应该是基本还原吧~ 请各位大神指教! 官网效果图 要写的就是最上方的会闪现的白色条条 效果分析 1.在滚动条往下拉到一定距 ...
- 怎么设置按钮的disabled属性
首先我们要知道怎么去设置 两种方法设置disabled属性 $('#area').attr("disabled",true); $('#area').attr("disa ...
- Docker 三剑客之 Compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Compose 中的两 ...