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

相关推荐
6Hzlia11 分钟前
【Classic 150 刷题计划】 LeetCode 14. 最长公共前缀 | C++ 纵向扫描法与防越界细节
c++·算法·leetcode
传奇开心果编程20 分钟前
【Rust入门知识点学与练】第35课:工具链与反馈环——先学会读编译器在说什么
开发语言·学习·rust
重生之小比特1 小时前
【Java SE】字符串 - String类
java·开发语言·intellij-idea
讳疾忌医丶9 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
lsswear9 小时前
Python 并发 线程
开发语言·python
2401_868534789 小时前
OpenStack 架构全景:八个核心组件深度拆解
c++·需求分析
郑州光合科技余经理9 小时前
国际版外卖系统:税率字段怎么和订单主流程解耦
android·java·开发语言·前端·后端·php·ai编程
软件课代表CiCi9 小时前
运行库是什么?电脑缺运行库怎么办?c++运行库缺失修复全攻略
开发语言·c++·windows·电脑·dll修复·dll丢失·运行库
Ivanqhz10 小时前
MLIR OpBuilder
开发语言·python·mlir
蒸蒸yyyyzwd11 小时前
从面经中学到的三件事
c++·笔记