STL顺序容器之deque双端队列

原创 2012年03月27日 09:17:28

deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。

deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()vector不支持的操作。

deque的一些性质:

1:与vector容器一样,在deque容器的中间insert或erase元素效率比较低。

2:不同于vector容器,deque容器提供高效地在其首部实现insert或erase操作,就像在容器尾一样。

3:与vector容器一样而不同于list容器的是,deque容器支持对所有元素的随机访问。

4:在deque容器首部或尾部插入元素不会使任何迭代器失效,而在首部或尾部删除元素则只会使指向该元素的迭代器失效。在deque容器的任何其他位置的插入与删除操作将使指向该容器元素的所有迭代器失效。

使用示例1:

#include <iostream>
#include <deque>
using namespace std;
template <typename T>
class Print{
	public:
	void operator() (T& t){
	cout << t << " ";	
	}
};
int main(){
    deque<int> d;
    Print<int> print;
    for(int i = 0; i < 5; ++i)
     d.push_back(i + 1);
     //push_front() only apply to list and deque
     d.push_front(0);
    //pop_front() only applyy to list and deque
     cout << "pop_front():" << endl;
     while(! d.empty()){
      for_each(d.begin(),d.end(),print);
      cout << endl;
	  d.pop_front();	
     }
     //pop_back()
        for(int i = 0; i < 5; ++i)
     d.push_back(i + 1);
     cout << "pop_back():" << endl;
     while(! d.empty()){
      for_each(d.begin(),d.end(),print);
      cout << endl;
	  d.pop_back();	
     }
}

运行结果:

pop_front():
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5
pop_back():
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
其他诸如swap,assign等操作同vector一致,使用示例可以直接参见

STL顺序容器之vector类型

 

 

版权声明:转载时请标注来自于"AJIOY的专栏"

stl之deque双端队列容器

deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除。不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势。 头文件 #include...

C++STL之双端队列容器

deque双端队列容器与vector很类似,采用线性表顺序存储结构。但与vector区别,deque采用分块的线性存储结构来存储数据,每块的大小一般为512B,将之称为deque块,所有的deque块...

STL 顺序容器之双端队列

目录 双端队列是由动态数组实现。 头文件: #include 构造方法: deque deq                                        创建一个没有任...

libevent2.0源码学习三:对网络模型的(EPOLL)的封装

Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,所以,libevent对系统底...

queue.h之tailq.h尾队列理解使用

一、连接、组织方式 如图: 每个entry有两个关键元素:tqe_next(简称为next)、tqe_prev(简称为prev)。next指向下个entry的地址,prev指向上个entry的...

STL顺序容器之deque双端队列

deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。 deque的绝大部分操作与vecto...

STL顺利容器之双端队列(deque)

双端队列是由动态数组实现。 头文件: #include 构造方法: deque deq                                  ...

STL泛型编程-deque双端队列容器

deque双端队列容器     deque双端队列容器和vector一样,采用线性表顺序存储结构。但与vector不同的是,deque采用分块的线性存储结构来存储数据,每块的大小一般为512字节,称...
  • zuolj
  • zuolj
  • 2013年12月16日 10:55
  • 772

STL序列式容器之双端队列——deque

前面我们学习过序列容器vector,vector是占用一段连续内存空间,并且是单向开口的,只能在尾部进行压入或者弹出元素(其实从技术上讲,vector也可以实现在头部实现插入和删除操作,但是效率非常低...

【C++】STL常用容器总结之五:双端队列deque

所谓的deque是”double ended queue”的缩写,双端队列不论在尾部或头部插入元素,都十分迅速。而在中间插入元素则会比较费时,因为必须移动中间其他的元素。双端队列是一种随机访问的数据类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:STL顺序容器之deque双端队列
举报原因:
原因补充:

(最多只允许输入30个字)