标准库定义了四种关联容器: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的更多相关文章

  1. C++关联容器<map>简单总结

    C++关联容器<map>简单总结 map提供大小可变的关联容器,基于关联键值高效检索元素值.当你处理键值对的数据是,都可以考虑使用map关联容器. 特点: 大小可变的关联容器,基于关联键值 ...

  2. c++中关联容器map的使用

    C++关联容器<map>简单总结(转) 补充: 使用count,返回的是被查找元素的个数.如果有,返回1:否则,返回0.注意,map中不存在相同元素,所以返回值只能是1或0. 使用find ...

  3. 关联容器(map):支持高效查找的容器,一种键值对的集合。

    #include <iostream> #include <string> #include <map> #include <vector> using ...

  4. 关联容器——map、set

    map类型通常被称为关联数组,与正常数组类似,不同之处在于其下标不必是整数.我们通过一个关键字而不是位置来查找值(键值对). 与之相对,set就是关键字的简单集合.当只是想知道一个值是否存在时,set ...

  5. STL 笔记(二) 关联容器 map、set、multimap 和 multimap

    STL 关联容器简单介绍 关联容器即 key-value 键值对容器,依靠 key 来存储和读取元素. 在 STL 中,有四种关联容器,各自是: map 键值对 key-value 存储,key 不可 ...

  6. 统计数字(关联容器map)

    题目描述 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109).已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统 ...

  7. 关联容器map(红黑树,key/value),以及所有的STL容器详解

    字符串或串(String)是由数字.字母.下划线组成的一串字符.一般记为 s=“a1a2···an”(n>=0).它是编程语言中表示文本的数据类型.在程序设计中,字符串(string)为符号或数 ...

  8. C++ 关联容器

    <C++ Primer 4th>读书笔记 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素. 关联容器(Ass ...

  9. 【C++ Primer 第11章】2. 关联容器操作

    练习答案 一.访问元素 关联容器额外类型别名  key_type 此容器类型的关键字类型 mapped_type 每个关键字关联的类型,只 适用于map mapped_type 对于set,与key_ ...

随机推荐

  1. Qt之等待提示框(QTimer)

    简述 上节讲述了关于QPropertyAnimation实现等待提示框的显示,本节我们使用另外一种方案来实现-使用定时器QTimer,通过设置超时时间定时更新图标达到旋转效果. 简述 效果 资源 源码 ...

  2. 关于Qt

    什么是Qt Qt是一个针对桌面.嵌入式.移动设备的一个跨平台的应用程序开发框架,支持的平台包括Linux.OS X.Windows.VxWorks.QNX.Android.iOS.BlackBerry ...

  3. 如何在Android studio中同时打开多个工程? (转载)

    最近学习Android Studio,想同时打开两个Project.但是点击File->Open之后,原有的Project被关闭掉了.怎么在新的窗口中打开Project呢? 解决: 点击Help ...

  4. Balsamiq Mockups简单介绍(UI草图绘制工具)

    什么是Balsamiq Mockups Balsamiq Mockups出自加利福尼亚州的Balsamiq工作室,创始人Peldi在2008年6月推出了这款手绘风格的产品原型设计工具,并广受好评.2年 ...

  5. iso中第三方框架SDWebImage的使用步骤

    一.SDWebImage的使用 1.依赖的框架 * ImageIO.framework * MapKit.framework 2.UIImageView下载图片需要的头文件:UIImageView+W ...

  6. clearfix 清除浮动的问题

    今天看一篇博文,发现其实有很多方法实现清除浮动,各有利弊 采用伪类:after进行后续空制的高度位零的伪类层清除 采用CSS overflow:auto的方式撑高 采用CSS overflow:hid ...

  7. textarea高度自适应

    var tx=document.getElementById("tx"); tx.style.height=tx.scrollHeight+"px" tx.st ...

  8. Python学习2-列表和元组

    Python学习2-列表和元组 标签(空格分隔): 列表 元组 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号--即元素的位置,也称为索引.索引从0开始. ...

  9. php.curl详解

    目前为目最全的CURL中文说明了,学PHP的要好好掌握.有很多的参数.大部份都很有用.真正掌握了它和正则,一定就是个采集高手了. PHP中的CURL函数库(Client URL Library Fun ...

  10. svn log 不显示日志的问题

    在你配好了Xcode里的SourceControl之后提交代码回复代码都很方便,可是为什么在Xcode上提交的log,在svn下面显示不出来! 解决办法是:在命令行下,先 svn update 一下, ...