没有输出的输入是不完整的

0%

deque的简单使用

本文为c++容器系列第二篇.
主要测试了deque相关的方法,主要作为代码备份方便之后遗忘时查询。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream>
#include <deque>

using namespace std;

template <class T>
void printContainer(const char * msg,const T& s){
cout<<msg<<'\t';
copy(s.begin(),s.end(),ostream_iterator<int>(cout, " "));
cout<<endl;
}

int main(){
//三种声明方式
deque<int> s={1,2,3,4};
deque<int> s1{1,2,3,4};
deque<int> s2(s.begin(),s.end()-1);

printContainer("deque s",s);
printContainer("deque s1",s1);
printContainer("deque s2 ",s2);

//两种获取对应位置元素的方式
cout<<"s[0] "<<s[0]<<endl;
cout<<"a.at[0] "<<s.at(0)<<endl;

//打印出全部的元素
cout<<"print all elements "<<endl;
for(auto i:s){
cout<<i<<'\t';
}
cout<<"\n";

cout<<"print all elements by iteror"<<endl;
auto siter = s.begin();
while(siter!=s.end()){
cout<<*siter<<'\t';
siter++;
}
cout<<endl;

cout<<"s.front() "<<s.front()<<endl;
cout<<"s.back() "<<s.back()<<endl;

cout<<"s.begin() "<<*s.begin()<<endl;
cout<<"s.end()-s.begin() "<<s.end()-s.begin()<<endl;

cout<<"s.empty() "<<s.empty()<<endl;
cout<<"s.size() "<<s.size()<<endl;
cout<<"s.max_size() "<<s.max_size()<<endl;

//s.clear();
//cout<<"after clear s.empty() "<<s.empty()<<endl; // 1

s.push_front(5);
printContainer("after push front 5: ",s);
s.pop_front();
printContainer("after pop front: ",s);

s.push_back(5);
printContainer("after push back5: ",s);
s.pop_back();
printContainer("after pop back: ",s);

s.emplace(s.begin()+2,5);
printContainer("emplace begin+2 ",s);

s.emplace_back(6);
printContainer("emplace back",s);

s.erase(s.begin()+2);
printContainer("erase begin+2",s);


//用列表容器1的内容给s赋值,将s输出
reverse(s.begin(),s.end());
printContainer("deque l by assign:",s);

return 0;
}
/* 运行结果
deque s 1 2 3 4
deque s1 1 2 3 4
deque s2 1 2 3
s[0] 1
a.at[0] 1
print all elements
1 2 3 4
print all elements by iteror
1 2 3 4
s.front() 1
s.back() 4
s.begin() 1
s.end()-s.begin() 4
s.empty() 0
s.size() 4
s.max_size() 4611686018427387903
after push front 5: 5 1 2 3 4
after pop front: 1 2 3 4
after push back5: 1 2 3 4 5
after pop back: 1 2 3 4
emplace begin+2 1 2 5 3 4
emplace back 1 2 5 3 4 6
erase begin+2 1 2 3 4 6
deque l by assign: 6 4 3 2 1
Program ended with exit code: 0
*/