概念
双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。
头文件
1 |
名字空间
1 | std |
构造函数
语法:
1 | deque(); |
C++ Deques
能用以下方式创建:
- 无参,创建一个空双向队列
size
- 创建一个大小为size
的双向队列num and val
- 放置num
个val
的拷贝到队列中,from
- 从from
创建一个内容一样的双向队列start
和end
- 创建一个队列,保存从start
到end
的元素。
例如,下列代码创建并显示一个双向队列:
1 | // 创建一个双向队列,里面有10个1 |
运算符
语法:
1 | [] |
你可以使用[]
操作符访问双向队列中单个的元素。
常用函数
assign
语法:
1 | void assign( input_iterator start, input_iterator end); |
assign()
函数用start
和end
指示的范围为双向队列赋值,或者设置成num
个val
。
at
语法:
1 | reference at( size_type pos ); |
at()
函数返回一个引用,指向双向队列中位置pos
上的元素。
back
语法:
1 | reference back(); |
back()
返回一个引用,指向双向队列中最后一个元素。
begin
语法:
1 | iterator begin(); |
begin()
函数返回一个迭代器,指向双向队列的第一个元素。
clear
语法:
1 | void clear(); |
clear()
函数删除双向队列中所有元素。
empty
语法:
1 | bool empty(); |
empty()
返回真如果双向队列为空,否则返回假。
end
语法:
1 | iterator end(); |
end()
函数返回一个迭代器,指向双向队列的尾部。
erase
语法:
1 | iterator erase( iterator pos ); |
erase()
函数删除pos
位置上的元素,或者删除start
和end
之间的所有元素。返回值是一个iterator
,指向被删除元素的后一个元素。
front
语法:
1 | reference front(); |
front()
函数返回一个引用,指向双向队列的头部。
get_allocator
语法:
1 | allocator_type get_allocator(); |
get_allocator()
函数返回双向队列的配置器。
insert
语法:
1 | iterator insert( iterator pos, size_type num, const TYPE &val ); |
insert()
在pos
前插入num
个val
值,或者插入从start
到end
范围内的元素到pos
前面。
max_size
语法:
1 | size_type max_size(); |
max_size()
返回双向队列能容纳的最大元素个数。
pop_back
语法:
1 | void pop_back(); |
pop_back()
删除双向队列尾部的元素。
pop_front
语法:
1 | void pop_front(); |
pop_front()
删除双向队列头部的元素。
push_back
语法:
1 | void push_back( const TYPE &val ); |
push_back()
函数在双向队列的尾部加入一个值为val
的元素。
push_front
语法:
1 | void push_front( const TYPE &val ); |
push_front()
函数在双向队列的头部加入一个值为val
的元素。
rbegin
语法:
1 | reverse_iterator rbegin(); |
rbegin()
返回一个指向双向队列尾部的逆向迭代器。
rend
语法:
1 | reverse_iterator rend(); |
rend()
返回一个指向双向队列头部的逆向迭代器。
resize
语法:
1 | void resize( size_type num, TYPE val ); |
resize()
改变双向队列的大小为num
,另加入的元素都被填充为val
。
size
语法:
1 | size_type size(); |
size()
函数返回双向队列中的元素个数。
swap
语法:
1 | void swap( deque &target ); |
swap()
函数交换target
和现双向队列中元素。