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

📅  最后修改于: 2021-05-30 11:35:44             🧑  作者: 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; // int的列表

关联容器:

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

  1. 存在一个钥匙。对于地图和设置,键是唯一的。如果是多图和多集,则允许键的多个值。如果是map和multimap,则有键/值对。在设置的情况下,只有键。
  2. 元素遵循严格的弱排序。

以下是关联容器下的内容

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

序列与关联(明智的方式)
顺序容器

  1. 简单插入需要固定的时间。
  2. 前台具有固定的摊销时间。
  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等的更多准备工作,请参阅“完整面试准备课程”