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>
11
using namespace std;
12
#define showpass cout<<"pass"<<endl
13
typedef struct point
{
14
double x,y;
15
point(double a=0,double b=0)
{
16
x=a;
17
y=b;
18
}
19
}point;
20
ostream operator<<(ostream out,point a)
21

{
22
return out<<a.x<<" "<<a.y<<endl;
23
}
24
25
void print(point a)
26

{
27
cout<<a;
28
}
29
int 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
}

/**//*2
Name: C++ DEQUE 3
Copyright: 4
Author: Torres5
Date: 18-08-08 10:556
Description: STL DEQUE 學習筆記 7
*/8
#include<deque>9
#include<iostream>10
#include<algorithm>11
using namespace std;12
#define showpass cout<<"pass"<<endl13

typedef struct point
{14
double x,y;15

point(double a=0,double b=0)
{16
x=a;17
y=b;18
}19
}point;20
ostream operator<<(ostream out,point a)21


{22
return out<<a.x<<" "<<a.y<<endl;23
}24

25
void print(point a)26


{27
cout<<a;28
}29
int main()30


{31
//deque與vector很相似只不過是兩端都可以存取的vector32
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
}

