C++ Double-ended Queues
Double-ended queues are like vectors, except that they allow fast insertions and deletions at the beginning (as well as the end) of the container.
Display all entries for C++ Double-ended Queues on one page, or view entries individually:
Container constructors |
create dequeues and initialize them with some data |
Container operators |
compare, assign, and access elements of a dequeue |
assign |
assign elements to a dequeue |
at |
returns an element at a specific location |
back |
returns a reference to last element of a dequeue |
begin |
returns an iterator to the beginning of the dequeue |
clear |
removes all elements from the dequeue |
empty |
true if the dequeue has no elements |
end |
returns an iterator just past the last element of a dequeue |
erase |
removes elements from a dequeue |
front |
returns a reference to the first element of a dequeue |
insert |
inserts elements into the dequeue |
max_size |
returns the maximum number of elements that the dequeue can hold |
pop_back |
removes the last element of a dequeue |
pop_front |
removes the first element of the dequeue |
push_back |
add an element to the end of the dequeue |
push_front |
add an element to the front of the dequeue |
rbegin |
returns a reverse_iterator to the end of the dequeue |
rend |
returns a reverse_iterator to the beginning of the dequeue |
resize |
change the size of the dequeue |
size |
returns the number of items in the dequeue |
swap |
swap the contents of this dequeue with another |
在我看来,deque就是一个双端的array,和vector是一摸一样的,虽然内部机制不一样
1/**//*
2 Name: C++ DEQUE
3 Copyright:
4 Author: Torres
5 Date: 18-08-08 10:55
6 Description: STL DEQUE 学习笔记
7*/
8#include<deque>
9#include<iostream>
10#include<algorithm>
11using namespace std;
12#define showpass cout<<"pass"<<endl
13typedef struct point{
14 double x,y;
15 point(double a=0,double b=0){
16 x=a;
17 y=b;
18 }
19}point;
20ostream operator<<(ostream out,point a)
21{
22 return out<<a.x<<" "<<a.y<<endl;
23}
24
25void print(point a)
26{
27 cout<<a;
28}
29int main()
30{
31 //deque与vector很相似只不过是两端都可以存取的vector
32 deque<point>cp,cp1(10);
33 int i;
34 for(i=0;i<5;i++){
35 point temp(i,i+1);
36 cp.push_back (temp);
37 }
38
39 for(i=0;i<5;i++){
40 cp1[i].x=i;
41 cp1[i].y=i+1;
42 }
43 //取地址符号[]必须在容器已经开辟空间后才能用,push函数开辟了新空间
44 for_each(cp.begin(),cp.end(),print);
45 cout<<endl;
46 for_each(cp1.begin(),cp1.end()-5,print);
47 cout<<endl;
48
49 //erase删除函数
50 cp.erase(cp.begin()+1);
51 for_each(cp.begin(),cp.end(),print);
52 cout<<endl;
53 cp1.erase(cp1.begin(),cp1.begin()+3);
54 for_each(cp1.begin(),cp1.end()-5,print);
55 cout<<endl;
56
57 cout<<cp.front()<<cp.back()<<endl;
58
59
60 return 0;
61}