STL教程(四)——deque

如需转载,请注明出处。

deque前面带有字母d,是double的含义,它是双端队列,而是queue是单端的。以下双端队列均指deque。

示意图如下:

双端队列是序列容器,两端具有扩展和收缩的特征。
它们与向量类似,但在插入和删除元素时更有效。与向量不同,可能无法保证连续的存储分配。
双端队列基本上是数据结构双端队列的实现。队列数据结构允许仅在末尾插入并从前面删除。这就像现实生活中的一个队列,其中人们从前面移除并添加在后面。双端队列是队列的特殊情况,其中两端都可以进行插入和删除操作。

创建deque对象的语法:

deque<object_type> deque_name;  

deque的函数与vector相同,前后都增加了push和pop操作。

#include <iostream> 
#include <deque> 

using namespace std; 

void showdq(deque <int> g) 
{ 
	deque <int> :: iterator it; 
	for (it = g.begin(); it != g.end(); ++it) 
		cout << '\t' << *it; 
	cout << '\n'; 
} 

int main() 
{ 
	deque <int> gquiz; 
	gquiz.push_back(10); 
	gquiz.push_front(20); 
	gquiz.push_back(30); 
	gquiz.push_front(15); 
	cout << "The deque gquiz is : "; 
	showdq(gquiz); 

	cout << "\ngquiz.size() : " << gquiz.size(); 
	cout << "\ngquiz.max_size() : " << gquiz.max_size(); 

	cout << "\ngquiz.at(2) : " << gquiz.at(2); 
	cout << "\ngquiz.front() : " << gquiz.front(); 
	cout << "\ngquiz.back() : " << gquiz.back(); 

	cout << "\ngquiz.pop_front() : "; 
	gquiz.pop_front(); 
	showdq(gquiz); 

	cout << "\ngquiz.pop_back() : "; 
	gquiz.pop_back(); 
	showdq(gquiz); 

	return 0; 
} 

上述程序的输出是:

The deque gquiz is :     15    20    10    30

gquiz.size() : 4
gquiz.max_size() : 4611686018427387903
gquiz.at(2) : 10
gquiz.front() : 15
gquiz.back() : 30
gquiz.pop_front() :     20    10    30

gquiz.pop_back() :     20    10

Deque的方法:

insert():返回指向新插入元素的第一个的迭代器。
rbegin():返回一个反向迭代器,它指向双端队列的最后一个元素(即它的反向开始)。
rend():返回一个反向迭代器,它指向deque开头之前的位置(被认为是它的反向结束)。
cbegin():返回指向容器第一个元素的常量迭代器,也就是说,迭代器不能用于修改,只遍历deque。
deque max_size():返回deque容器可以容纳的最大元素数。
assign():将值分配给相同或不同的deque容器。
resize()L:改变双端队列大小的函数。
push_front():此函数用于将元素从前面推入双端队列。
push_back():此函数用于将元素从后面推入双端队列。
pop_front()函数用于从前面弹出或删除双端队列中的元素。 
pop_back()函数用于从后面弹出或删除双端队列中的元素。
front()函数用于引用deque容器的第一个元素。 
back()函数用于引用deque容器的最后一个元素。
clear()函数用于删除deque容器的所有元素,从而使其大小为0. 
erase()函数用于从中删除元素来自指定位置或范围的容器。
empty()函数用于检查deque容器是否为空。 
size()函数用于返回deque容器的大小或deque容器中的元素数。
operator = operator用于通过替换现有内容将新内容分配给容器。 
operator []运算符用于引用运算符内给定位置的元素。
at()函数用于引用作为函数参数给出的位置处的元素。
swap()函数用于将一个双端队列的内容与另一个相同类型和大小的双端队列交换。
begin()函数用于返回指向deque容器的第一个元素的迭代器。
end()函数用于返回指向deque容器的最后一个元素的迭代器。
emplace_front()函数用于将新元素插入到deque容器中。新元素被添加到双端队列的开头。 emplace_back()函数用于将新元素插入到deque容器中。新元素被添加到双端队列的末尾。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值