📜  C++ 中的序列与关联容器

📅  最后修改于: 2021-09-12 10:49:24             🧑  作者: Mango

序列容器

在标准模板库中,它们指的是一组容器类模板,我们用来存储数据。顾名思义,一个常见的属性是元素可以按顺序访问。
以下每个容器使用不同的算法进行数据存储,因此对于不同的操作,它们具有不同的速度。并且容器中的所有元素都应该是相同的类型

  1. array = 它实现了不可调整大小的数组。
    例如:int arr[10]; // 固定大小的数组 10。
  2. vector = 它实现了具有更快随机访问速度的动态数组这些非常有用,因为与它们可以调整大小的数组不同。
    例如:vector v; // int类型的向量
  3. dequeue 用于实现随机访问速度更快的双端队列
    例如:出队 dq; //字符类型出队
  4. forward_list :它实现单向链表。
    例如:forward_list fl; // int 类型的 forward_list。
  5. list :它实现了双链表
    例如:列表 l; // 整数列表

关联容器

在标准模板库中,它们指的是用于实现关联数组的一组类模板它们用于存储元素,但对它们的元素有一些限制。
这些容器的两个重要特征是

  1. 存在一个密钥。在 map 和 set 的情况下,key 是唯一的。在 multimap 和 multiset 的情况下,允许一个键的多个值。在 map 和 multimap 的情况下,有键值对。在设置的情况下,只有键。
  2. 元素遵循严格的弱排序 .

这些是属于关联容器的以下内容

  1. map:这里我们创建的每个键都必须是唯一的。
    例如:地图 geek_no; // 这里第一个数据类型是键,第二个数据类型是值
  2. set:这里我们创建的键也必须是唯一的,但与 map 的一个重要区别是,这里的值本身充当键,因此这意味着 set 中的元素是唯一的,即没有重复。
    例如:设置 s; // 值本身充当键。
  3. 多重映射:一样的地图,但这里的关键不必是唯一的。
    例如:multimap geeks_no;
  4. multiset: 与 set 相同,但这里元素的唯一性并不重要,即我们可以多次使用相同的元素,而不像 set。
    例如:多组标记;

序列与关联(复杂性明智)
顺序容器

  1. 简单的插入需要恒定的时间。
  2. Front有固定的摊销时间。
  3. 中间插入很慢。

在关联容器中,大多数复杂性以对数形式表示

  1. 插入一个元素是 O(log n)
  2. 删除一个元素 O(log n)
  3. 搜索元素 O(log n)
  4. 递增或递减迭代器 O(1)(摊销)
  5. 中间插入速度更快。

无序关联容器

请注意,每个关联容器都有无序关联容器,其中包含没有任何特定顺序的元素。无序关联容器的示例是 unordered_set、unordered_map、unordered_multimap、unordered_multiset。

想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程