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 ...
随机推荐
- linux c: core dump
1. core dump文件系统设置 http://www.cnblogs.com/no7dw/archive/2013/02/18/2915819.html 编译时需要输入-g才会生成coredum ...
- Spring3.0 入门进阶(1):从配置文件装载Bean
Spring 已经盛行多年,目前已经处于3.0阶段,关于Spring的概念介绍性的东西网上已经很多,本系列博客主要是把一些知识点通过代码的方式总结起来,以便查阅. 作为入门,本篇主要介绍Bean的加载 ...
- 性能测试之LoadRunner11 破解
1. 下载破解文件lm70.dll和mlr5lprg.dll lm70.dll文件,覆盖x:\Program Files\Mercury\LoadRunner\bin下文件即可. ml ...
- 10个优秀的 HTML5 & CSS3 下拉菜单制作教程
下拉菜单是一个非经常见的效果.在站点设计中被广泛使用.通过使用下拉菜单.设计者不仅能够在站点设计中营造出色的视觉吸引力,但也能够为站点提供了一个有效的导航方案.使用 HTML5 和 CSS3 能够更e ...
- Decoding BASE64 in ABAP
Code Gallery Decoding BASE64 in ABAP Skip to end of metadata Created by Frank Klausner, last modifie ...
- 关于在打包Jar文件时遇到的资源路径问题(一)
当我们将程序写好,并进行打包成Jar文件时,通常都带有各种资源,这些资源可以是图像或者声音文件,也可以是别的如文本文件或二进制文件等,这些资源都和代码密切相关.例如在一个JPanel类上显示一些可能变 ...
- ice cave
Description You play a computer game. Your character stands on some level of a multilevel ice cave. ...
- javascript (九)注释
单行注释,采用双斜杠 // 多行注释,采用 /* */
- Qml 写的弹出层控件(13篇博客)
QML弹出窗口组件,灯箱效果.动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透 使用 Popup { id: popup width: 200; heigh ...
- Web.xml配置具体解释之context-param
转自:http://blog.csdn.net/liaoxiaohua1981/article/details/6759206 格式定义: [html] view plaincopy <cont ...