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_ ...
随机推荐
- 使用@RequestParam绑定请求参数到方法参数
@RequestParam注解用于在控制器中绑定请求参数到方法参数.用法如下:@RequestMapping public void advancedSearch( @RequestParam(& ...
- python——no module named XX
加PYTHONPATH吧,新建一个系统环境变量,把你的目录复制进去即可
- CodeForces Round #298 Div.2
A. Exam 果然,并没有3分钟秒掉水题的能力,=_=|| n <= 4的时候特判.n >= 5的时候将奇数和偶数分开输出即可保证相邻的两数不处在相邻的位置. #include < ...
- 用AngularJS开发的过程中如何查看Scope内容
scope的继承就好比JS的原型链继承,深入理解Scope:http://www.lovelucy.info/understanding-scopes-in-angularjs.html 通过查看官网 ...
- 编译安装apache+php(加常见问题解决)
[编译apache]./configure --prefix=/usr/local/lamp/httpd -with-apr=/usr/local/apr -with-apr-util=/usr/lo ...
- jsp内置对象和el表达式
九个内置对象 *out jsp的输出流,用来向客户端响应 *page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this; *config 它对应真 ...
- js数组的声明与应用
js数组的声明与应用 数组:一种容器,存储批量数据.JavaScript是一种弱类型语言.什么是弱类型,就是变量可以存储多种类型变量的引用不会报错.所以js数组可以存储不同的数据. 一.数组的作用:只 ...
- Sublime 的中文乱码问题
Sublime Text 是现在最受欢迎的文本编辑器,没有之一.它非常简洁,而且对各种代码的高亮显示很美观.但是,它默认不支持 GBK.Shift-JIS 等中文.日本编码格式,故打开此类文件会出现乱 ...
- jquery再学习(1)
一:jquery对象和js的dom对象相互转化 html代码 <ul> <li class="sxf" name="dd">第一< ...
- 收缩Mysql的ibdata1文件大小方法
ibdata1是mysql数据库中一个数据文件了,你会发现它来越大了,下面我来介绍收缩Mysql的ibdata1文件大小方法 如果你有使用InnoDB来存储你的Mysql表,使用默认设置应该会碰到个非 ...