std::deque
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
在头文件 <deque> 中定义
|
||
template< class T, |
||
std::deque
(双端队列)是一个索引序列的容器,允许快速的插入和删除的开始和结束。此外,在任一端插入和删除一个deque从未无效指针或引用的其余元素.原文:
std::deque
(double-ended queue) is an indexed sequence container that allows fast insertion and deletion at both the beginning and the end. In addition, insertion and deletion at either end of a deque never invalidates pointers or references to the rest of the elements.反对std::vector,一个deque的元素连续存储:典型的实现使用一个单独分配固定大小的数组的顺序.
原文:
As opposed to std::vector, the elements of a deque are not stored contiguously: typical implementations use a sequence of individually allocated fixed-size arrays.
的双端队列的存储根据需要自动地膨胀和收缩。扩展一个deque比扩张的std::vector便宜,因为它不涉及的现有元素复制到新的内存位置.
原文:
The storage of the deque is automatically expanded and contracted as needed. Expansion of a deque is cheaper than the expansion of a std::vector because it does not involve copying of the existing elements to a new memory location.
双端队列上常见的操作的复杂性(效率)是如下:
原文:
The complexity (efficiency) of common operations on deques is as follows:
- 随机访问 - 常数O(1)
- 在结尾或开头插入或移除元素 - 摊销不变O(1)原文:Insertion or removal of elements at the end or beginning - amortized constant O(1)
- 插入或移除元素 - 线性O(n)原文:Insertion or removal of elements - linear O(n)
std::deque
符合要求的Container
,AllocatorAwareContainer
,SequenceContainer
和ReversibleContainer
.原文:
std::deque
meets the requirements of Container
, AllocatorAwareContainer
, SequenceContainer
and ReversibleContainer
.[编辑] 会员类型
会员类型
|
Definition |
value_type
|
T
|
allocator_type
|
Allocator
|
size_type
|
无符号整数类型(通常是size_t)
原文: Unsigned integral type (usually size_t) |
difference_type
|
有符号整型(通常是ptrdiff_t) |
reference
|
Allocator::reference (至 C++11)value_type& (C++11 起)
|
const_reference
|
Allocator::const_reference (至 C++11)const value_type& (C++11 起)
|
pointer
|
Allocator::pointer (至 C++11)std::allocator_traits<Allocator>::pointer (C++11 起) |
const_pointer
|
Allocator::const_pointer (至 C++11) std::allocator_traits<Allocator>::const_pointer (C++11 起) |
iterator
|
RandomAccessIterator
|
const_iterator
|
随机访问常迭代器 |
reverse_iterator
|
std::reverse_iterator<iterator> |
const_reverse_iterator
|
std::reverse_iterator<const_iterator> |
[编辑] 成员函数
构建 deque (公共成员函数) | |
析构 deque (公共成员函数) | |
将值分配到容器中 (公共成员函数) | |
将值分配到容器中 (公共成员函数) | |
返回的关联分配器 (公共成员函数) | |
| |
访问指定的元素,同时进行越界检查 (公共成员函数) | |
访问指定的元素 (公共成员函数) | |
访问第一个元素 (公共成员函数) | |
访问最后一个元素 (公共成员函数) | |
| |
返回指向容器开始的迭代器 (公共成员函数) | |
返回指向容器尾端的迭代器 (公共成员函数) | |
返回一个指向容器最后一个元素的反向迭代器 (公共成员函数) | |
返回一个指向容器前端的反向迭代器 (公共成员函数) | |
| |
检查是否容器是空的 原文: checks whether the container is empty (公共成员函数) | |
返回的元素数 (公共成员函数) | |
返回可能容纳的最大元素数 (公共成员函数) | |
(C++11) |
通过释放未使用的内存减少了内存的使用情况 原文: reduces memory usage by freeing unused memory (公共成员函数) |
| |
清除其内容 (公共成员函数) | |
插入元素 (公共成员函数) | |
(C++11) |
就地构造元素 (公共成员函数) |
擦除元素 (公共成员函数) | |
将元素添加到末端 (公共成员函数) | |
(C++11) |
在末端就地构造元素 (公共成员函数) |
删除最后一个元素 (公共成员函数) | |
在容器的开始处插入新元素 (公共成员函数) | |
(C++11) |
构造元素的地方开始 原文: constructs elements in-place at the beginning (公共成员函数) |
删除第一个元素 (公共成员函数) | |
改变容器中可存储元素的个数 (公共成员函数) | |
交换deque 的内容 (公共成员函数) |
[编辑] 非成员函数
根据字典顺序比较的deque中的值 原文: lexicographically compares the values in the deque (函数模板) | |
特化std::swap算法 (函数模板) |