C++98,第 23.2.1 节(模板类双端队列)
“双端队列...支持在开头或结尾处进行恒定时间的插入和擦除操作;在中间插入和擦除需要线性时间。也就是说,双端队列特别针对在开头和结尾处推入和弹出元素进行了优化.与向量一样,存储管理是自动处理的。”
所以是的:O(1) 在两端插入。
std::deque的 cppreference 条目具有以下复杂性:
双端队列常见操作的复杂度(效率)如下:
这与C++ 标准草案“23.3.3.1 类模板双端队列概述”一致,其中指出(重点是我的):
双端队列是一个序列容器,与向量 (23.3.6) 一样,支持随机访问迭代器。另外,支持开头或结尾的恒定时间插入和擦除操作;中间的插入和擦除需要线性时间。也就是说,双端队列特别针对在开头和结尾推入和弹出元素进行了优化。与向量一样,存储管理是自动处理的。
对于std::vector cppreference 说:
向量上常见操作的复杂度(效率)如下:
这与标准草案部分23.3.6.1 类模板向量概述一致:
向量是支持随机访问迭代器的序列容器。此外,它还支持末尾(摊销)恒定时间插入和擦除操作;中间的插入和擦除需要线性时间。存储管理是自动处理的,但可以给出提示以提高效率。[...]
| 归档时间: |
|
| 查看次数: |
19326 次 |
| 最近记录: |