序列容器
在标准模板库中,它们指的是一组容器类模板,我们用来存储数据。顾名思义,一个常见的属性是元素可以按顺序访问。
以下每个容器使用不同的算法进行数据存储,因此对于不同的操作,它们具有不同的速度。并且容器中的所有元素都应该是相同的类型。
- array = 它实现了不可调整大小的数组。
例如:int arr[10]; // 固定大小的数组 10。 - vector = 它实现了具有更快随机访问速度的动态数组,这些非常有用,因为与它们可以调整大小的数组不同。
例如:vectorv; // int类型的向量 - dequeue 用于实现随机访问速度更快的双端队列
例如:出队 dq; //字符类型出队 - forward_list :它实现单向链表。
例如:forward_list fl; // int 类型的 forward_list。 - list :它实现了双链表。
例如:列表 l; // 整数列表
关联容器
在标准模板库中,它们指的是用于实现关联数组的一组类模板。它们用于存储元素,但对它们的元素有一些限制。
这些容器的两个重要特征是
- 存在一个密钥。在 map 和 set 的情况下,key 是唯一的。在 multimap 和 multiset 的情况下,允许一个键的多个值。在 map 和 multimap 的情况下,有键值对。在设置的情况下,只有键。
- 元素遵循严格的弱排序。 .
这些是属于关联容器的以下内容
- map:这里我们创建的每个键都必须是唯一的。
例如:地图 geek_no; // 这里第一个数据类型是键,第二个数据类型是值 - set:这里我们创建的键也必须是唯一的,但与 map 的一个重要区别是,这里的值本身充当键,因此这意味着 set 中的元素是唯一的,即没有重复。
例如:设置 s; // 值本身充当键。 - 多重映射:一样的地图,但这里的关键不必是唯一的。
例如:multimap geeks_no; - multiset: 与 set 相同,但这里元素的唯一性并不重要,即我们可以多次使用相同的元素,而不像 set。
例如:多组标记;
序列与关联(复杂性明智)
顺序容器
- 简单的插入需要恒定的时间。
- Front有固定的摊销时间。
- 中间插入很慢。
在关联容器中,大多数复杂性以对数形式表示
- 插入一个元素是 O(log n)
- 删除一个元素 O(log n)
- 搜索元素 O(log n)
- 递增或递减迭代器 O(1)(摊销)
- 中间插入速度更快。
无序关联容器
请注意,每个关联容器都有无序关联容器,其中包含没有任何特定顺序的元素。无序关联容器的示例是 unordered_set、unordered_map、unordered_multimap、unordered_multiset。
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。