C++ Library - <deque>
介绍 (Introduction)
Deque是D ouble E nded Que ue的首字母缩写。 它是一个序列容器,可以改变它的大小运行时。 Container是一个保存相同类型数据的对象。 序列容器严格按线性顺序存储元素。
双端队列的元素可以分散在不同的记忆块中。 容器存储必要的信息,以允许在恒定时间内直接访问任何元素。 与向量不同,deque不保证将所有元素存储在连续的内存位置。 因此,它不允许通过偏移指针直接访问数据。 但它允许使用下标operator []直接访问任何元素。
Deque可以在运行时根据需要从两端收缩或扩展。 内部分配器自动满足存储要求。 Deque提供与向量类似的功能,但提供了从任何一端插入和删除数据的有效方法。
零尺寸的deques也是有效的。 在这种情况下,deque.begin()和deque.end()指向同一位置。 但是调用front()或back()的行为是未定义的。
定义 (Definition)
下面是
template < class T, class Alloc = allocator<T> > class deque;
参数 (Parameters)
T - 包含的元素的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
Alloc - 分配器对象的类型。
默认情况下,使用allocator类模板,该模板定义最简单的内存分配模型,并且与值无关。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
1 | value_type | T(模板的第一个参数) |
2 | allocator_type | Alloc(模板的第二个参数) |
3 | reference | value_type& |
4 | const_reference | const value_type& |
5 | pointer | value_type* |
6 | const_pointer | const value_type * |
7 | iterator | value_type的随机访问迭代器 |
8 | const_iterator | const value_type的随机访问迭代器 |
9 | reverse_iterator | std::reverse_iterator <iterator> |
10 | const_reverse_iterator | std::reverse_iterator <const_iterator> |
11 | size_type | size_t |
12 | difference_type | ptrdiff_t |
来自的函数
以下是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | deque::deque 默认构造函数 构造一个零元素的空双端队列。 |
2 | deque::deque fill constructor 用n个元素构造一个新的deque,并为deque的每个元素赋值 |
3 | deque::deque range构造函数 构造一个具有从头到尾范围内的元素数量的双端队列。 |
4 | deque::deque copy构造函数 构造一个双端队列,其中包含现有容器中存在的每个元素的副本。 |
5 | deque::deque move构造函数 使用move语义构造一个带有其他内容的双端队列。 |
6 | deque::deque 初始化列表构造函数 从初始化列表构造一个deque。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | deque::~deque 通过释放它的内存来销毁deque对象。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
1 | deque::assign 范围版本 通过替换旧元素为deque元素分配新值。 |
2 | deque::assign 填充版本 通过替换旧元素为deque元素分配新值。 |
3 | deque::assign initializer list version 通过替换旧元素为deque元素分配新值。 |
4 | deque::at 返回对deque中位置n处的元素的引用。 |
5 | deque::back 返回对双端队列的最后一个元素的引用。 |
6 | deque::begin 返回指向双端队列的第一个元素的随机访问迭代器。 |
7 | deque::cbegin 返回一个指向deque开头的常量随机访问迭代器。 |
8 | deque::cend 返回一个指向deque开头的常量随机访问迭代器。 |
9 | deque::clear 通过从双端队列中删除所有元素来销毁双端队列,并将双端队列的大小设置为零。 |
10 | deque::crbegin 返回一个常量反向迭代器,它指向容器的反向器开头。 |
11 | deque::crend 返回一个常量反向迭代器,它指向双端队列的反向末端。 |
12 | deque::emplace 通过在位置插入新元素来扩展容器。 |
13 | deque::emplace_back 在双端队列的末尾插入新元素。 |
14 | deque::emplace_front 在双端队列的开头插入新元素。 |
15 | deque::empty 测试deque是否为空。 |
16 | deque::end 返回一个迭代器,它指向deque容器中的past-the-end元素 。 |
17 | deque::erase position version 从双端队列中删除单个元素。 |
18 | deque::erase 范围版本 从双端队列中删除单个元素。 |
19 | deque::front 返回对双端队列的第一个元素的引用 |
20 | deque::get_allocator 返回与deque关联的分配器 |
21 | deque::insert 单个元素版本 通过在位置插入新元素来扩展容器。 |
22 | deque::insert 填充版本 通过在容器中插入新元素来扩展容器。 |
23 | deque::insert 范围版本 通过在容器中插入新元素来扩展容器。 |
24 | deque::insert 移动版本 通过在容器中插入新元素来扩展容器。 |
25 | deque::insert 初始化列表版本 通过在容器中插入新元素来扩展容器。 |
26 | deque::max_size 返回deque可以保存的最大元素数。 |
27 | deque::operator= copy version 通过替换旧的内容为双端队列分配新内容,并在必要时修改大小。 |
28 | deque::operator= 移动版本 通过替换旧的内容为双端队列分配新内容,并在必要时修改大小。 |
29 | deque::operator= 初始化列表版本 通过替换旧的内容为双端队列分配新内容,并在必要时修改大小。 |
30 | deque::operator[] 返回对位置n处的元素的引用。 |
31 | deque::pop_back 从双端队列中删除最后一个元素,并将双端队列的大小减小一个。 |
32 | deque::pop_front 从双端队列中移除第一个元素,并将双端队列的大小减小一个。 |
33 | deque::push_back 在双端队列的末尾插入新元素,并将双端队列的大小增加一。 |
34 | deque::push_back 移动版本 在双端队列的末尾插入新元素,并将双端队列的大小增加一。 |
35 | deque::push_front 在双端队列的前面插入新元素,并将双端队列的大小增加一个。 |
36 | deque::push_front 移动版本 在双端队列的前面插入新元素,并将双端队列的大小增加一个。 |
37 | deque::rbegin 返回一个反向迭代器,它指向双端队列的最后一个元素。 |
38 | deque::rend 返回一个反向迭代器,它指向双端队列的反向末尾。 |
39 | deque::resize 改变双端队列的大小。 |
40 | deque::resize value version 改变双端队列的大小。 |
41 | deque::shrink_to_fit 请求容器减小容量以适应其大小。 |
42 | deque::size 返回双端队列中存在的元素数。 |
43 | deque::swap 用另一个deque x的内容交换双端队列的内容。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | operator== 测试两个deques是否相等。 |
2 | operator!= 测试两个deques是否相等。 |
3 | operator< 测试第一个deque是否比其他deque少。 |
4 | operator<= 测试第一个双端是否小于或等于其他。 |
5 | operator> 测试第一个deque是否大于其他deque。 |
6 | operator>= 测试第一个双端是否大于或等于其他。 |
7 | swap 交换两个双端队列的内容。 |