deque双端队列(常用方法总结)

 1 /*关于C++ STL中deque的学习*/
 2 #include<cstdio>
 3 #include<iostream>
 4 #include<deque>
 5
 6 using namespace std;
 7 void print(deque<int> d);
 8 void rprint(deque<int> d);
 9 int main()
10 {
11     deque<int> dq;
12     dq.push_back(1);
13     dq.push_back(2);
14     dq.push_back(3);
15     dq.push_back(4);
16     cout<<dq.size()<<endl;
17     cout<<dq[0]<<" "<<dq[1]<<" "<<dq[2]<<" "<<dq[3]<<endl;
18
19     dq.push_front(0);
20     cout<<dq.size()<<endl;
21     cout<<dq[0]<<" "<<dq[1]<<" "<<dq[2]<<" "<<dq[3]<<" "<<dq[4]<<endl;
22
23     dq.insert(dq.begin()+2,8);
24     cout<<dq.size()<<endl;
25     cout<<dq[0]<<" "<<dq[1]<<" "<<dq[2]<<" "<<dq[3]<<" "<<dq[4]<<" "<<dq[5]<<endl;
26
27     cout<<"##"<<endl;
28     print(dq);
29     dq.pop_front();
30     print(dq);
31
32     print(dq);
33     dq.pop_back();
34     print(dq);
35
36     print(dq);
37     dq.clear();
38     cout<<"##"<<endl;
39     print(dq);
40     cout<<"##"<<endl;
41     return 0;
42 }
43
44 void print(deque<int> d){
45     for(int i=0;i<d.size();i++){
46         printf("%d ",d[i]);
47     }
48     puts("");
49 }
50
51 void rprint(deque<int> d){
52     for(int i=d.size()-1;i>=0;i--){
53         printf("%d ",d[i]);
54     }
55     puts("");
56 }

原文地址:https://www.cnblogs.com/wenzhixin/p/9129773.html

时间: 2024-10-05 02:00:10

deque双端队列(常用方法总结)的相关文章

std::deque双端队列介绍

在建立vector容器时,一般来说伴随这建立空间->填充数据->重建更大空间->复制原空间数据->删除原空间->添加新数据,如此反复,保证vector始终是一块独立的连续内存空间:在建立deque容器时,一般便随着建立空间->建立数据->建立新空间->填充新数据,如此反复,没有原空间数据的复制和删除过程,是由多个连续的内存空间组成的. C++ STL容器deque和vector很类似,也是采用动态数组来管理元素. 与vector不同的是deque的动态数组首

deque双端队列容器

C++中的STL还是比较有用的,尤其是在做科研实现算法的时候,之前也有用过,但是没怎么系统地学过,因此最近找了本书,大致浏览了一下,叶志军的那本<C++ STL开发技术导引>,科普.入门性质的一本书,写得比较浅[呵呵,勿喷].下面的内容大部分是摘自该书. deque双端队列容器(double-ended queue),可以在尾部.头部插入.删除元素,采用分块的线性结构来存储数据,两个迭代器分别指向容器的首尾元素,以deque块为单位进行内存分配,使用二级的Map进行管理. 创建deque对象

stl之deque双端队列容器

deque与vector很相似,不仅能够在尾部插入和删除元素,还能够在头部插入和删除. 只是当考虑到容器元素的内存分配策略和操作性能时.deque相对vector较为有优势. 头文件 #include<deque> 创建deque对象 1)deque();//创建一个没有不论什么元素的deque对象. deque<int> d 2)deque(size_typen);//创建一个具有n个元素的deque对象.每一个元素採用它的类型下的默认值. deque<int> d(

Deque 双端队列

Deque允许在队列的头部或尾部进行出队和入队操作 LinkedBlockingDeque是一个线程安全的双端队列实现,可以说他是最为复杂的一种队列,在内部实现维护了前端和后端节点,但是其没有实现读写分离,因此同一时间只能有一个线程对其进行操作.在高并发中性能要远低于其他BlockingQueue.更要低于ConcurrentLinkedQueue,在jdk早期有一个非线程安全的Deque就是ArrayDeque了,java6里添加了LinkedBlockingDeque来弥补多线程场景下线程安

deque双端队列容器(对象创建,数组、迭代器方式访问,元素的赋值、插入、删除等)

deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除.不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势. 头文件 #include<deque> 创建deque对象 1)deque();//创建一个没有任何元素的deque对象. deque<int> d 2)deque(size_typen);//创建一个具有n个元素的deque对象,每个元素采用它的类型下的默认值. deque<int> d(10)

STL容器:deque双端队列学习

所谓deque,是"double-ended queue"的缩写; 它是一种动态数组形式,可以向两端发展,在尾部和头部插入元素非常迅速; 在中间插入元素比较费时,因为需要移动其它元素;(No) 双端队列容器,在序列的两端放置和删除元素是高效的; 而vector只是在序列末尾插入才是高效的. C++ Code 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495

c++ deque 双端队列

双端队列: 函数 描述 c.assign(beg,end)c.assign(n,elem)  将[beg; end)区间中的数据赋值给c.将n个elem的拷贝赋值给c. c.at(idx)  传回索引idx所指的数据,如果idx越界,抛出out_of_range. c.back()  传回最后一个数据,不检查这个数据是否存在. c.begin()  传回迭代器重的可一个数据. c.clear()  移除容器中所有数据. deque<Elem> cdeque<Elem> c1(c2)

设计循环队列——写起来最清爽的还使用原生的deque 双端队列

622. 设计循环队列 难度中等89收藏分享切换为英文关注反馈 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为“环形缓冲器”. 循环队列的一个好处是我们可以利用这个队列之前用过的空间.在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间.但是使用循环队列,我们能使用这些空间去存储新的值. 你的实现应该支持如下操作: MyCircularQueue(k): 构造器,设置队

deque双端队列用法

#include <iostream> #include <cstdio> #include <deque> #include <algorithm> using namespace std; deque<int> dq; int main() { dq.push_front(102);///插入头部 dq.push_back(101);///插入尾部 sort(dq.begin(),dq.end()); deque<int>::it