C++ 之关联容器 map
标准库定义了四种关联容器:map是其中之一(另外还有set、multimap、multiset)。map的元素以键-值(key-value),在学了顺序容器之后,再学习关联容器,就比较比较好理解了。
map类型,可以说是键-值对的集合,每一个键都与一个或多个值相关联。
利用它可以构造多钟函数:
map<string , int > a;
map<char ,int> b;
map<srting ,char > c;
map<int,vector<int> > d; 等等
关于使用map函数的一些基本操作,不想用文字去多废话,直接看程序吧;
有关 插入数据 使用迭代器 查找 删除 获取长度 的基本操作:
#include<iostream>
#include<map>
using namespace std;
int main(){
map<int,int> m;
//定义迭代器
map<int,int>::iterator mIter;
//插入数据方法1
m.insert(pair<int,int> (,) );
m.insert(pair<int,int> (,) );
m.insert(pair<int,int> (,) );
//法2
m.insert(map<int,int>::value_type (,) );
//法3 类似数组
m[]=; //查找与清除,均是利用到健值
map<int,int>::iterator a = m.find();
if(a!=m.end()){
m.erase(a);
}
for(mIter = m.begin();mIter!=m.end();mIter++)
cout<<mIter->first<<" "<<mIter->second<<endl;
//获取长度
cout<<m.size()<<endl;
return ;
}
值得注意一点,关联容器会自己帮你排序,排序是根据key(键)的大小,这一点它比顺序容器要好用用一些,还有就是因为这个原因,你map里面所定义的key(键)一定是要可以比较大小的类型。
修改
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main(){
map<char ,string> n;
map<char ,string>::iterator it;
map<char ,string>::value_type num1('',"xioaming");
n.insert(num1);
n[''] = "xiaoli";
//遍历修改,虽说只有俩元素
for(it=n.begin();it!=n.end();it++)
{
it->second="xiaoqiu";
cout<<it->first<<endl;
cout<<it->second<<endl;
}
return ;
}
最后在加上一个书本上的一个计算单词个数的程序
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main()
{
string s;
map<string, int> counters;
while (cin >> s) // 读取单词并且计数
++counters[s];
for (map<string, int>::const_iterator it = counters.begin();it != counters.end(); ++it) {
cout << it->first << "\t" << it->second << endl;
}
return ;
}
C++ 之关联容器 map的更多相关文章
- C++关联容器<map>简单总结
C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...
- c++中关联容器map的使用
C++关联容器<map>简单总结(转) 补充: 使用count,返回的是被查找元素的个数.如果有,返回1:否则,返回0.注意,map中不存在相同元素,所以返回值只能是1或0. 使用find ...
- 关联容器(map):支持高效查找的容器,一种键值对的集合。
#include <iostream> #include <string> #include <map> #include <vector> using ...
- 关联容器——map、set
map类型通常被称为关联数组,与正常数组类似,不同之处在于其下标不必是整数.我们通过一个关键字而不是位置来查找值(键值对). 与之相对,set就是关键字的简单集合.当只是想知道一个值是否存在时,set ...
- STL 笔记(二) 关联容器 map、set、multimap 和 multimap
STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...
- 统计数字(关联容器map)
题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统 ...
- 关联容器map(红黑树,key/value),以及所有的STL容器详解
字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s=“a1a2···an”(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数 ...
- C++ 关联容器
<C++ Primer 4th>读书笔记 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. 关联容器(Ass ...
- 【C++ Primer 第11章】2. 关联容器操作
练习答案 一.访问元素 关联容器额外类型别名 key_type 此容器类型的关键字类型 mapped_type 每个关键字关联的类型,只 适用于map mapped_type 对于set,与key_ ...
随机推荐
- LeetCode Reverse Linked List II 反置链表2
题意:将指定的一段位置[m,n]的链表反置,返回链表头. 思路:主要麻烦在链表头,如果要从链表头就开始,比较特殊. 目前用DFS实现,先找到m-1的位置,再找到n+1的位置,中间这段就是否要反置的,交 ...
- Wireshark基本介绍和学习TCP三次握手(转)
http://www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html 之前写过一篇博客:用 Fiddler 来调试HTTP,HTTPS. 这篇 ...
- 利用matlab编写实现显示fmri切片slice图像 混合显示 不同侧面显示 可叠加t检验图显示 by DR. Rajeev Raizada
1.参考 reference 1. tutorial主页:http://www.bcs.rochester.edu/people/raizada/fmri-matlab.htm. 2.speech_b ...
- Ensemble Learning 之 Adaboost
Boosting Boosting 是一种提升方法,将一系列弱学习器组合成为强学习器.基于样本权重的 Boosting 的工作流程是这样的,给定初始训练集构建一个基学习器,根据基学习器对训练样本的分布 ...
- Spring中@Resource与@Autoware
问题 这其实就是@Autoware与@Resource没有正确的使用,这个错误是因为wmPoiOplogService这个变量装配方式是@Resource,按照@Resource的按名字查找的方式,并 ...
- git 创建一个新分支,并将一个分支内容复制给创建的新分支
git checkout -b newBranchName
- 在Linux上安装多Jboss个需要修改的端口
如果在一台机器上部署了多个jboss server,需要修改相关端口以避免端口冲突.目前确认需要修改的配置如下一.vi $JBOSS_HOME/server/default/conf/jboss-se ...
- 利用ArcGIS Engine、VS .NET和Windows控件开发GIS应用
Dixon 原文 用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署 ...
- 因為 Hypervisor 未執行,所以無法啟動虛擬機器
bcdedit /set hypervisorlaunchtype auto https://technet.microsoft.com/zh-tw/magazine/2009.02.hyperv.a ...
- 11、NFC技术:NDEF Uri格式解析
NDEF Uri格式规范 与NDEF文本格式一样,存储在NFC标签中的Uri也有一定的格式 http://www.nfc-forum.org/specs/spec_dashboard 编写可以解析Ur ...