C++ primer 第十一章

1.关联容器

关联容器中的元素是按关键字来保存和访问的,反映了关键字的作用。

关联容器支持高效的关键字查找和访问,主要关联容器类型是map和set。

map中的元素是一些关键字-值,关键字起到索引的作用,值表示与索引相关联的数据。

map<key,value>

set中的每个元素只包含一个关键字,支持高效的关键字查询操作。

set<key>

类型map和multimap定义在头文件map中,set和multiset定义在头文件set中,无序容器则定义在头文件unordered_map和unordered_set中。

关联容器类型
map 关联数组,保存关键字_值对
set 关键字即是值,只保存关键字的容器
multimap 关键字可重复出现的map
multiset 关键字可重复出现的set
unordered_map 用哈希函数组织的map
unordered_set 用哈希函数组织的set
unordered_multimap 关键字可重复的哈希map
unordered_multiset 关键字可重复的哈希set

2.使用关联容器 

set<string> exclude = {"but","or","end","and"}; 

 map类型通常被称为关联数组,与数组不同之处在于map的下标不一定是整数。

set是关键字的简单集合,用于查找某个值是否存在。

map<string,size_t> words;

类似于顺序容器,关联容器也是模板,定义map时必须指定关键字和值的类型。

从map中提取一个元素时,会得到一个pair类型的对象。

pair是一个模板类型,保存两个名为first和second的数据成员。

first成员保存关键字,second成员保存对应的值。

set容器起到类似于黑名单、白名单的作用。

与顺序容器相似,我们可以对一个关联容器的元素进行列表初始化。

set<string> exclude = {"the","end","and"};

3.关联容器概述 

由于关联容器中元素是根据关键字存储的,因此关联容器不支持顺序容器的位置相关的操作。

每个关联容器都定义了一个默认构造函数,它创建一个指定类型的空容器。

map<string,size_t> words;  //空容器

使用列表初始化空容器map,要将每个关键字_值对包围在花括号中。

map<string,string> authors = {
  
  {"lisi","lizhenyuan"},{"zhangsan","zhangsan2"}};

一个map或set中的关键字必须是唯一的。 

容器multimap和multiset允许多个元素具有相同的关键字。

set容器会自动忽略具有相同的关键字的元素,不会报错。

3.1、关键字类型的要求 

 对于有序容器来说,关键字类型必须定义元素比较的方法。

默认情况下,标准库使用关键字类型的<运算符来比较两个关键字。

我们可以提供自己定义的比较函数来替代

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值