C++Primer第5版读书笔记(第11章 关联容器)

第11章 关联容器

类型map和multimap定义在头文件map中;set和multiset定义在头文件set中;无序容器则定义在头文件unordered_map和unordered_set中。
这里写图片描述

//定义形式
map<type1,type2> name;
set<type> name;

11.2 关联容器概述

  1. 关联容器不支持顺序容器的位置相关的操作,例如push_front或push_back等,

11.2.2 关键字类型的要求
对于有序容器,关键字类型必须定义元素比较的方法,默认情况下,标准库使用关键字类型的<运算符来比较两个关键字。

//以multiset为例,定义一个A类型的multiset,并定义一个A类型的比较函数cmp,
bool cmp(const A &lhs, const A &rhs)
{
	return lhs.data < rhs.data;
}
multiset<A,decltype(cmp)*> aset(cmp);

当用decltype获得一个函数指针类型时,必须加上一个*来指出要使用一个给定函数类型的指针,用cmp来初始化aset对象,这表示当向aset添加元素时,通过调用cmp来为这些元素排序。

11.2.3 pair类型

  1. 与其他标准库类型不同,pair的数据成员是public的,两个成员分别命名为first和second,定义在头文件utility中。

这里写图片描述

11.3 关联容器操作
这里写图片描述

  1. set的迭代器是const的,虽然set类型同时定义了iterator和const_iterator类型,但两种类型都只允许只读访问set中的元素。
  2. map和set类型都支持begin和end操作;

11.3.2 添加元素
这里写图片描述

11.3.3 删除元素
这里写图片描述

11.3.4 map的下标操作
对一个map使用下标操作,其行为与数组或vector上的下标操作不相同,使用一个不在容器中的关键字作为下标,会添加一个具有此关键字的元素到map中,因此只可以对非const的map使用下标操作。
这里写图片描述

11.3.5 访问元素
这里写图片描述
这里写图片描述
11.4 无序容器
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值