• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2022-12-07 19:44 Aet 隐藏边栏 |   抢沙发  2 
文章评分 1 次,平均分 5.0

概述

简述

  1. 在关联容器中,对象的位置取决于和它关联的键的值
    1. 键可以是基本类型,也可以是类类型

map

  1. map容器的元素是pair<const K,T>类型的对象,这种对象封装了一个T类型的对象和一个与其关联的K类型的键
  2. 不允许有重复的键,可以保存重复的对象
  3. 容器中的元素都是有序的,默认使用less<K>比较

multimap

  1. 和map不同的是,允许使用重复的键

unordered_map

  1. unordered_map<K,T>pair<const K,T>元素的顺序并不是直接由键值确定的,而是由键值的哈希值确定的
    1. 哈希值是由一个叫做哈希的过程生成的整数
  2. 不允许有重复的键

unordered_multimap

  1. 和unordered_map不同的是,允许有重复的键

set

  1. 对象唯一,元素有序

multiset

  1. 可以保存重复对象

unordered_set

  1. 对象唯一,元素位置由哈希值决定

unordered_multiset

  1. 可以保存重复对象

map

insert

count

  1. 可能返回0或1

emplace

  1. 在适当的位置直接构造新元素,从而避免复制和移动操作

emplace_hint

  1. 在适当的位置直接构造新元素,从而避免复制和移动操作
  2. 第一个参数指定元素生成的位置

erase

  1. 移除键和参数匹配的元素
  2. 返回所移除元素的个数

make_pair<>()

  1. 显示参数决定了返回的pair对象的类型,会返回一个pair<iterator,bool>对象
    1. 对象成员的first是一个迭代器,要么指向插入元素,要么指向阻止插入的元素
    2. 对象成员second(是一个bool)是返回对象,如果插入成功,返回true,否则返回false

tuple

  1. 是pair模板的泛化,但允许定义tuple模板的实例,可以封装不同类型的任意数量的对象,因此tuple实例可以有任意数量的模板类型参数

forward_as_tuple

  1. 一个定义在tuple头文件中的模板函数
  2. 可以为不支持拷贝或移动运算符的T1和T2类型提供了在适当位置生成pair<T1,T2>对象

make_tuple

get<>()

  1. 参数是size_t类型,表示tuple中元素的索引

tie<>()

multimap

insert

  1. 插入一个或多个元素,而且插入总是成功
  2. 返回指向插入元素的迭代器

emplace

  1. 在容器适当位置构造元素

emplace_hint

  1. 尽可能的在第一个参数指向的元素前面插入生成一个元素

equal_range

  1. 返回一个封装了两个迭代器的pair对象,这两个迭代器所确定的范围内的元素的键和参数值相等

lower_bound

  1. 返回一个迭代器,指向键值和参数相等或大于参数的第一个元素,或者指向结束迭代器

upper_bound

  1. 返回一个迭代器,指向键值大于函数参数的第一个元素,没有这样的元素的话,就返回一个结束迭代器

count

  1. 返回有多少个元素的键和给定的键相同

unordered_map

  1. 键唯一,元素无序
  2. 一般情况下,元素被保存在哈希表中,这个表中的条目被称为格子,每个格子可以包含几个元素
    1. 一个给定的哈希值会选择特定的格子,因为哈希值可能的个数几乎可以肯定会大于格子的个数,两个不同的哈希值可能会映射到同一个格子上。
    2. 因此,不同键会产生相同的哈希值,所以会产生碰撞,而且两个不同的哈希值选择相同的格子也会产生碰撞
  3. 影响元素存储管理的因素:
    1. 容器中格子的个数有一个默认值,但也可以指定初始个数
    2. 载入因子是每个格子平均保存的元素的个数。这个值等于容器中元素的个数除以格子的个数

rehash

  1. 改变格子的数量

max_load_factor

  1. 增加最大载入因子(每个格子所包含的元素的个数)

insert

emplace

  1. 在适当的位置生成对象,返回一个包含迭代器和布尔值的pair对象

emplace_hint

at

  1. 返回参数所关联对象的引用,如果键不存在,会抛出一个out_of_range的异常

erase

  1. 移除元素

clear

  1. 移除所有元素

unordered_multimap

  1. 一个允许有重复键的无序map

insert

emplace

emplace_hint

at

哈希

  1. 哈希是用给定范围内的基本类型的数据项,或者用string这样的对象,生成整数值的过程
  2. 哈希产生的值叫做哈希值或哈希码
  3. 产生重复的哈希值叫碰撞

set

  1. 内部元素的组织方式和map一样,都是平衡二叉树

insert

emplace

emplace_hint

erase

clear

empty

size

max_size

  1. 存储的最大元素个数

find

  1. 返回一个和参数匹配的元素的迭代器

  1. at

multiset

insert

emplace,emplace_hint

  1. 总是成功

find

equal_range

lower_bound

upper_bound

count

unordered_set

insert

emplace,emplace_hint

find

equal_range

clear

erase

unordered_multiset

emplace,emplace_hint

erase

clear

max_load_factor

集合运算

并集

  1. set_union

交集

  1. set_intersection

差集

  1. set_difference

对称差集

  1. set_symmetric_difference

比较两个集合

  1. includes

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享