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

序列容器

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

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

关联容器

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

  • 存在一个键。在 mapset 的情况下,key 是唯一的。 在 multimapmultiset 的情况下,允许一个键有多个值。 在 mapmultimap 的情况下,有键值对。在设置的情况下,只有键。
  • 元素遵循严格的弱排序。

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

  • map:这里创建的每个键都必须是唯一的。例如:map geek_no; // 这里第一个数据类型是:key,第二个数据类型是value
  • set:这里创建的键也必须是唯一的,但与 map 的一个重要区别是,这里的值本身充当键,因此这意味着 set 中的元素是唯一的,即没有重复。例如:set s; // 值本身充当键。
  • multimap :与 map 相同,但这里的 key 不必是唯一的。例如:multimap geeks_no;
  • multiset:与 set 相同,但这里元素的唯一性无关紧要,即可以多次拥有相同的元素,这与 set 不同。例如:multiset marks;

序列与关联(复杂性)

按顺序容器

  • 简单的插入需要固定的时间。
  • Front具有恒定的摊销时间。
  • 中间插入很慢。

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

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

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

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/264200.html

(0)
上一篇 2022年6月7日 01:03
下一篇 2022年6月7日 01:03

相关推荐

发表回复

登录后才能评论