1 #include<iostream>
2 #include<stdlib.h>
3 using namespace std;
4 #include<deque>
5
6
7 /*
8 3.3.5 deque插入和删除
9 两端插入操作:
10 push_back(elem); //在容器尾部添加一个数据
11 push_front(elem); //在容器头部插入一个数据
12 pop_back(); //删除容器最后一个数据
13 pop_front(); //删除容器第一个数据
14 指定位置操作:
15 insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。
16 insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。
17 insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。
18 clear(); //清空容器的所有数据
19 erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。
20 erase(pos); //删除pos位置的数据,返回下一个数据的位置。
21 */
22
23
24 void pd(const deque<int> & d)
25 {
26 for(deque<int>::const_iterator it=d.begin(); it!=d.end(); it++)
27 {
28 cout << *it << " ";
29 }
30 cout << endl;
31 }
32
33
34 void test335_1()
35 {
36 deque<int> d1;
37
38 //尾插
39 d1.push_back(10);
40 d1.push_back(20);
41
42 //头插
43 d1.push_front(100);
44 d1.push_front(200);
45
46 pd(d1);
47
48 //尾删
49 d1.pop_back();
50 pd(d1);
51
52 //头删
53 d1.pop_front();
54 pd(d1);
55 }
56
57
58 void test335_2()
59 {
60 deque<int> d1;
61 d1.push_back(10);
62 d1.push_back(20);
63 d1.push_front(100);
64 d1.push_front(200);
65 pd(d1);
66
67 //insert一般插入
68 d1.insert(d1.begin(), 1000);
69 pd(d1);
70 d1.insert(d1.end(), 2, 999); //插入两个999
71 pd(d1);
72
73 //insert按照区间插入
74 deque<int> d2;
75 d2.push_back(1);
76 d2.push_back(2);
77 d2.push_back(3);
78 d1.insert(d1.begin(), d2.begin(), d2.end()); //将d2整个插入到d1头部
79 pd(d1);
80 }
81
82
83 void test335_3()
84 {
85 deque<int> d1;
86 d1.push_back(10);
87 d1.push_back(20);
88 d1.push_front(100);
89 d1.push_front(200);
90 pd(d1);
91
92 //删除
93 deque<int>::iterator it = d1.begin();
94 it++;
95 d1.erase(it); //利用迭代器删掉d1的第二个数据
96 pd(d1);
97
98 d1.erase(d1.begin(), d1.end()); //==d1.clear()
99 pd(d1);
100 }
101
102
103
104 int main()
105 {
106 test335_1();
107 test335_2();
108 test335_3();
109
110 system("pause");
111 return 0;
112 }
