美文网首页
第11章 关联容器

第11章 关联容器

作者: 咸鱼翻身ing | 来源:发表于2018-04-24 20:42 被阅读0次
  1. 关联容器分类:set还是map、关键字是否重复、关键字是否有序。

11.1 使用关联容器

  1. map类型通常被称为关联数组,通过关键字充当下标来查找值。set就是关键字的简单集合,当只想知道一个值是否存在时,set是最有用的。

11.2.2 关键字类型的要求

  1. 有序容器:关键字类型必须定义了比较方法,默认情况下使用<运算符,可自定义一个严格弱序。在集合类型中,关键字类型就是元素类型,在映射类型中,关键字类型是元素的第一部分的类型。
  2. 严格弱序:不能同时“小于等于”对方;“小于等于”具有传递性;双方都不“小于等于”对方称为“等价”,“等价”具有传递性。

11.2.3 pair类型

  1. pair类型:可用花括号包围的初始化器来返回pair类型的对象,老版本只允许显式构造。

11.3 关联容器操作

11.3.1 关联容器迭代器

  1. 关联容器迭代器:map的value_type是pair<const key_type, mapped_type>,所以map迭代器只能改变关键字映射的值,不能修改关键字;set的value_type等于key_type,都是const关键字,不能修改。

11.3.2 添加元素

  1. 关联容器insert:只有当关键字不存在时才插入,函数返回一个pair,包含一个指向元素的迭代器,和一个指示是否插入成功的bool型。
  2. 关联容器的insert成员向容器中添加一个元素或一个元素范围。insert的两个版本,分别接受一对迭代器,或者一个初始化器列表。
  3. 对一个map进行insert操作时,元素类型必须是一个pair。

11.3.3 删除元素

  1. 关联容器erase:通过传递给erase一个迭代器或一个迭代器对来删除一个元素或一个元素范围。还可以传入一个key_type参数,删除所有匹配给定关键字的元素,并返回被删除的元素数量。

11.3.4 map的下标操作

  1. map的下标操作:map下标操作返回mapped_type,解引用map迭代器返回value_type;若关键字还不存在,会创建一个对应关键字且值为0的新元素,已存在则返回最近一次赋的值;只能用于map和unorders_map。

11.3.5 访问元素

  1. 查找元素:find(第一个等于的迭代器)、count(数量)、lower_bound(第一个大于等于的迭代器)、upper_bound(第一个大于的迭代器)、equal_range(返回一个迭代器pair,表示所有相等的头及尾后位置)

11.4 无需容器

  1. 无序关联容器:使用关键字的哈希函数和==运算符;不能直接定义关键字类型为自定义类类型的无序容器,必须提供自己的hash模板版本,或者用另一种方法,类似于有序容器重载关键字类型的默认比较操作
  2. 管理桶:无序容器在存储上组织为一组桶,每个桶保存哈希值相同的若干元素;无序容器的性能依赖于哈希函数的质量和桶的数量及大小;管理桶的函数包括桶接口、桶迭代、哈希策略。`

相关文章

  • C++学习笔记 —— 关联容器map

    一、关联容器 关联容器(associative container)是对容器概念的另一个改进。关联容器将值与键关联...

  • 第11章:关联容器

    1. 使用关联容器 2. 关联容器概述2.1 定义关联容器2.2 关键字类型的要求2.3 pair类型 3. 关联...

  • 第11章 关联容器

    关联容器和顺序容器关联容器:按关键字保存和访问元素顺序容器:按在存储位置保存和访问元素 关联容器支持高效的关键字查...

  • GeekBand STL与泛型编程 -- 2

    1. 关联容器 关联容器与顺序容器有着根本的不同:关联容器中的元素是按照关键字来保存和访问的。与之相对,顺序容器中...

  • C++常用容器

    C++ 有两类常用容器,分别是顺序容器和关联容器,顺序容器例如vector,list,queue,关联容器例如ma...

  • 第11章 关联容器

    关联容器分类:set还是map、关键字是否重复、关键字是否有序。 11.1 使用关联容器 map类型通常被称为关联...

  • 关联容器

    关联容器与顺序容器的本质差别在于:关联容器通过键值(key)存储和读取元素,而顺序容器则通过袁术在容器中的位置存储...

  • 关联容器

    之前介绍过标准库中的顺序容器,顺序容器是元素在内存中按照一定顺序进行排列的,都是按线性结构进行排列。除了顺序容器外...

  • C++11 标准库源代码分析:连载之八

    无序关联容器 无序关联容器(Unordered associative container)是C++11标准库中新...

  • (十四)C++篇-关联容器map和set

    关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存...

网友评论

      本文标题:第11章 关联容器

      本文链接:https://www.haomeiwen.com/subject/dymqnxtx.html