stl容器

大部分容器的size的复杂度如下:

std::vector: 时间复杂度为(1).

std::deque: 时间复杂度为 O(1). 双端队列

std::list: 时间复杂度为 O(1)(C++11 及以后的版本)。

std::forward_list: 时间复杂度为 O(N),其中 N 是容器中的元素数。由于 `forward_list 是单向列表,计算大小需要遍历整个列表。

std::array: 时间复杂度为 O(1)。实际上,std::array 是一个静态数组,其大小在编译时已确定。

std::stack 和 std::queue: 它们是容器适配器,实际上依赖于其他容器实现(例如 vector, deque, 或 list),因此其 size 复杂度与底层容器的 size()` 复杂度相同

std::priority_queue: 时间复杂度为 O(1).

std::map 和 std::multimap: 时间复杂度为 O(1)(C++11 及以后的版本)。

std::unordered_map 和 std::unordered_multimap: 时间复杂度为 O(1)。

std::set 和 std::multiset: 时间复杂度为 O(1)(C++11 及以后的版本)。

std::unordered_set 和 std::unordered_multiset: 时间复杂度为 O(1)。

std::valarray:size成员函数时间复杂度为O(1)

std::bitset:size成员函数时间复杂度是O(1)

STL(标准模板库)中的 dequequeue 是两个不同的容器,它们之间有以下的区别:

  1. 底层数据结构不同:deque 的底层是由一段一段的定长数组构成的,相当于连续多个数组拼接而成,而 queue 的底层可以是 deque 或其他序列式容器。

  2. 支持的操作不同:deque 可以在两端进行插入和删除操作,支持随机访问;而 queue 只支持队尾插入、队首删除,不支持随机访问。

  3. 应用场景不同:deque 适用于需要在头部和尾部频繁插入和删除元素的场景,例如实现双端队列(deque),而 queue 适用于遵循先进先出 (FIFO) 原则的场景,例如实现消息队列等。

  4. 迭代器的类型不同:deque 的迭代器是随机访问迭代器,可以像普通指针一样进行加减操作,而 queue 的迭代器只支持前向迭代器,只能进行单步移动。

总之,dequequeue 都是 STL 提供的常用容器,queue是通过适配器实现的,它们在底层数据结构、支持的操作、应用场景和迭代器类型等方面都有不同。需要根据实际需求选择合适的容器来使用。

相关推荐
xlp666hub43 分钟前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
得物技术2 小时前
搜索 C++ 引擎回归能力建设:从自测到工程化准出|得物技术
c++·后端·测试
xlp666hub1 天前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网1 天前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub1 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
不想写代码的星星1 天前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++
xlp666hub2 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
不想写代码的星星2 天前
C++继承、组合、聚合:选错了是屎山,选对了是神器
c++
不想写代码的星星3 天前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
樱木Plus5 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++