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是通过适配器实现的,它们在底层数据结构、支持的操作、应用场景和迭代器类型等方面都有不同。需要根据实际需求选择合适的容器来使用。

相关推荐
BadBadBad__AK3 小时前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境15 小时前
Eigen 库如何借助 OpenMP 加速计算
c++·后端
卷无止境16 小时前
OpenMPI、MPICH 与 OpenMP:关系、核心概念与架构全解
c++·后端
郝学胜_神的一滴2 天前
CMake 30:循环语法全解|foreach_while双循环精讲、迭代技巧与实战避坑指南
c++·cmake
卷无止境4 天前
C++ 的Eigen 库全解析
c++
卷无止境4 天前
现代 C++特性大盘点:一门脱胎换骨的老语言
c++·后端
郝学胜_神的一滴4 天前
CMake 27:缓存变量的特性、语法、类型与实操全解
c++·cmake
博客18006 天前
酷宝的使用方法,超好用的免费界面库,C++、MFC可用
c++·mfc·界面库·库来帮·酷宝
郝学胜_神的一滴6 天前
CMake 026:属性体系精讲、四大作用域全解 & 实战代码落地
c++·cmake
众少成多积小致巨6 天前
JNI (Java Native Interface) 技术手册中文参考指南
android·java·c++