C++ Primer第十章关联容器笔记

  1. 顺序容器与关联容器的区别
    关联容器通过key存储和读取容器,而顺序容器通过元素在容器中的位置顺序存储和访问元素.
    关联容器不提供顺序容器中的front、push_front、back、push_back、pop_back等操作.关联容器按照key值排序.
  2. 基本关联容器类型
// 键值对形式
map 
// 只包含键,set集合中的元素不重复
set
// 支持同一个键出现多次的map类型
multimap
// 支持同一个键出现多次的set类型 
multiset
  1. pair标准库类型
// 创建一个空的pair对象p1,两个元素的类型分别为T1,T2,采用值初始化
pair<T1,T2> p1;
// 创建一个空的pair对象p1,两个元素的类型分别为T1,T2,first成员初始化为v1,second成员初始化为v2
pair<T1,T2> p1(v1, v2);
// 以v1和v2创建一个新的pair对象
make_pair(v1,v2);
// 两个pair对象之间的小于运算,先比较first,再比较second
p1<p2;
// first和second都相等,则相等
p1==p2;
// 返回p中名为first的公有数据成员,first是const的形式,不能修改
p.first;
p.second;
  1. map中insert、count、find、erase的使用
    在使用迭代器遍历map容器时,迭代器指向的元素按键的生序排列.
// e是一个用在map容器m上的value_type类型(map<K,V>)的值,如果
m.insert(e);
// beg,end为标记元素范围的迭代器
m.insert(beg,end);
// 以iter迭代器为起点搜索新元素存储的位置,e为一个用在map容器m上的value_type类型(map<K,V>)的值
m.insert(iter,e);

// 返回m中k(键)的出现次数
m.count(k);
// 如果m容器中存在按k索引的元素,则返回指向该元素的迭代器.如果不存在,则返回超出末端迭代器
m.find(k);

// 删除m中键为k的元素,返回size_type类型的值,表示删除的元素个数
m.erase(k);
// 删除迭代器p指向的元素
m.erase(p);
// 删除迭代器b、e指向的元素之间的元素,左闭右开
m.erase(b,e);
  1. multimap和multiset类型
  1. multimap和multiset类型与相应的单元素版本具有相同的头文件定义:分别是map和set头文件.
  2. 由于multimap中一个键可以对应多个值,所以multimap不支持下标运算.
// 返回一个迭代器,指向键不小于k的第一个元素
m.lower_bound(k);
// 返回一个迭代器,指向键大于k的第一个元素
m.upper_bound(k);
// 返回一个迭代器的pair对象,first成员等价于m.lower_bound(k),second成员等价于m.upper_bound(k).
m.equal_range(k);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值