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

相关推荐
Highcharts.js3 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
头发还在的女程序员4 小时前
医院陪诊管理系统怎么选择?——2026 年选型避坑与架构参考
java·开发语言·陪诊系统·陪诊app·医院陪诊陪护
王维同学5 小时前
Winsock 协议与名称空间 Provider 目录
网络·c++·windows·安全
拳里剑气6 小时前
C++算法:BFS解决FloodFill算法
c++·算法·bfs·宽度优先
爱写代码的小朋友6 小时前
从零开始学 Win32 API:C++ 窗口编程实战(VS Code + MinGW-w64 命令行详解)
开发语言·c++
果汁华6 小时前
Function Calling 与 Python 实战完整指南
开发语言·网络·python
小小晓.7 小时前
C++:语句和作用域
开发语言·c++
fqbqrr7 小时前
2607C++,soui,xplayer视频播放器
c++·soui
wanderist.8 小时前
Lambda表达式在算法竞赛中的应用
java·开发语言·算法
zh路西法8 小时前
【10天速通ROS2-PX4无人机】(四) 关掉GPS和气压计,纯激光定位还能飞吗
c++·无人机·px4·ros2·卡尔曼滤波·fastlio2