C++ Primer笔记7_STL之关联容器
关联容器
与顺序容器不同,关联容器的元素是按keyword来訪问和保存的。而顺序容器中的元素是按他们在容器中的位置来顺序保存的。
关联容器最常见的是map、set、multimap、multiset
map的元素以键-值【key-value】对的形式组织:键用作元素在map中的索引,而值则表示所存储和读取的数据。
set仅包括一个键。并有效的支持关于某个键是否存在的查询。
pair类型
首先介绍下pair,pair定义在utility头文件里,一个pair保存两个数据成员,类似容器,pair是一个用来生成特点类型的模板。
当创建一个pair时,我们必须提供两个类型名。
pair<string, string> a; //保存两个string
pair<string, int> b; //一个保存string,一个保存int
能够使用make_pair来构建一个pair
#include <iostream>
#include <utility> using namespace std; int main()
{
typedef pair<string, size_t> PS;
PS p("hello", 10);//等价于pair<string, size_t> p("hello", 10); PS p1 = make_pair("SCOTT", 20);//make_pair(v1, v2); 以v1、v2来构建一个pair cout << p.first << endl;
cout << p.second << endl; cout << p1.first << endl;
cout << p1.second << endl; return 0;
}
map对象
定义map对象:
map<string, int> p;//定义一个空map
map<K, V>m;//——创建一个名为m的空对象,键和值类型分别为K和V
map<K, V>m(m2);//——m是m2的副本。注意K和V的值要同样
map<K, V>m(b,e);//——创建map类型的对象m,存储迭代器b和e标记的范围内全部元素的副本。
关联容器操作:
key_type——此容器类型的keyword类型
mapped_type——每一个keyword关联的类型;仅仅适用于map
value_type——对于set。与key_value同样。对于map。为pair类型:pair<const key_type, mapped_type>
#include <iostream>
#include <map>
using namespace std; int main()
{
map<string, int> p;
p.insert(make_pair("Hello", 20));
map<string, int>::iterator i = p.begin(); map<string, int>::key_type first = i->first;//map对象自己定义了key_type与mapped_type两个类型
map<string, int>::mapped_type second = i->second; cout << first << endl;
cout << second << endl; while(i!=p.end())
{
cout << i->first << " " << i->second << endl;
++i;
} return 0;
}
给map加入元素:
1、能够使用insert成员实现;
2、或者先通过下标操作符获取元素,然后给获取的元素赋值。
使用下标訪问map与使用下标訪问数组或vector的行为截然不同: 用下标訪问不存在的元素将导致在map容器中加入一个新元素,它的键即为该下标值。
查找与统计map中的元素:
1、使用m.count(k); 统计m中k出现的次数
2、使用m.find(k);查找以k为索引的元素。假设存在返回指向该元素的迭代器,否则返回末端迭代器
统计单词出现的次数:
#include <iostream>
#include <map> using namespace std; int main()
{
string s;
map<string, int> wordCnt;
map<string, int>::iterator i; while(cin >> s)
{
wordCnt[s]++;
} for(i = wordCnt.begin(); i!=wordCnt.end(); ++i)
{
cout << i->first << " " << i->second << endl;
} return 0;
}
C++ Primer笔记7_STL之关联容器的更多相关文章
- C++ Primer : 第十一章 : 关联容器之关联容器的迭代器和操作
关联容器的操作 除了和顺序容器定义的类型之外,关联容器还定义了一下几种类型: 关联容器额外的类型别名 key_type 此容器类型的关键字类型 mapped_type 每个关键字关联的类型, ...
- C++ Primer : 第十一章 : 关联容器之概述、有序关联容器关键字要求和pair类型
标准库定义了两种主要的关联容器:map和set map中的元素时一些关键字-值(key-value)对,关键字起到索引的作用,值则表示与索引相关的数据.set中每个元素只包含一个关键字,可以完成高效的 ...
- C++ Primer 随笔 Chapter 10 关联容器
1.关联容器的类型:map(键-值对的集合,可理解为关联数组), set(单纯的键的集合), multimap(一个键对应多个值,键唯一), multiset(相同键可以是多个). 2.pair类型提 ...
- C++学习笔记54:关联容器,函数对象
关联容器的特点 1.每个关联容器都有一个键(key) 2.可以根据键高效查找元素 集合set 集合用来存储一组无重复的元素,由于集合的元素本身是有序的,可以高效地查找元素,也可以方便地指定大小范围的元 ...
- [C++ Primer] : 第11章: 关联容器
目录 使用关联容器 关联容器概述 关联容器操作 无序容器 使用关联容器 关联容器与顺序容器有着根本的不同: 关联容器中的元素是按关键字来保存和访问的, 按顺序容器中的元素是按它们在容器中的位置来顺序保 ...
- 【足迹C++primer】38、关联容器操作(2)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/35244805 关联容器操作(2) map ...
- C++ Primer : 第十一章 : 关联容器示例: 一个单词转换的map
单词转换就是:将一些缩写的单词转换为实际的文本.第一个文件保存的是转换的规则,而第二个文件保存的是要转换的文本. 假设单词转换的规则的文件如下: brb be right back k okay? y ...
- C++关联容器综合应用:TextQuery小程序
本文介绍C++关联容器综合应用:TextQuery小程序(源自C++ Primer). 关于关联容器的概念及介绍,请参考园子里这篇博文:http://www.cnblogs.com/cy568sear ...
- C++ Primer 读书笔记:第10章 关联容器
第10章 关联容器 引: map set multimap multiset 1.pair类型 pair<string, int> anon anon.first, anon.second ...
随机推荐
- 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
题目
- Linux/ubuntu下的boost库安装
我一直都没有写博客的习惯,最近正好在研究linux下的开发(目前也只是粗粗的研究),且用到了boost库,就乘此机会写点什么,最起码记录一下我在安装boost的一些步骤,主要给和我一样的linux开发 ...
- 创建webservice 用service.xml配置(复杂点的方法)
用Axis2实现Web Service,虽然可以将POJO类放在axis2/WEB-INF/pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中.这 ...
- hdu4707 Pet
Pet Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...
- (1)前言——(10)jquery项目的历史(History of the jQuery project)
This book covers the functionality and syntax of jQuery 1.6.x, the latest version at the time of wri ...
- HDU 4293 Groups
模型挺好的dp题,其实这道题就是建一个模型然后就很容易想到递推过程了,我们可以把每个人的描述,存到数组a中,a[l][r]表示左边有l个,到第r个这个人所在一层停止...然后就可以写出转移状态方程了. ...
- [置顶] ubuntu 和 win7 远程登陆 + vnc登陆
ubuntu 和 win7 远程登陆: 第一种(通过win7自带的远程桌面来连接ubuntu) 1. windows7配置 我的电脑->属性->远程设置.-----允许远程连接 2. ub ...
- android:改动PagerTabStrip中的背景颜色,标题字体的样式、颜色和图标以及指示条的颜色
1.改动PagerTabStrip中的背景颜色 我们在布局中直接设置background属性就可以: <android.support.v4.view.ViewPager android:id= ...
- App 运营 推广相关
基本要素 1.定位和产品 2.取个好名字,一目了然+下载冲动 3.设计一个好图标,有感性和直观的认识 4.做好产品的说明.关键字,截图(前1-2行是重点) 5.做市场的排名(相关因素如下) (1) ...
- Lucene.Net 2.3.1开发介绍 —— 四、搜索(二)
原文:Lucene.Net 2.3.1开发介绍 -- 四.搜索(二) 4.3 表达式用户搜索,只会输入一个或几个词,也可能是一句话.输入的语句是如何变成搜索条件的上一篇已经略有提及. 4.3.1 观察 ...