1.双端队列deque
deque 的存储按需自动扩展及收缩。扩张 deque 比扩张 std::vector 更优
,因为它不涉及到复制既存元素到新内存位置。另一方面, deque 典型地拥有较大的最小内存开销
2.用法详解
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
template<typename T>
void print(const T& beg,const T& end){
for (T t1 = beg; t1 != end;t1++){
cout << *t1 << " ";
}
cout << endl;
}
int main(){
deque<int> q1(10,3);
vector<int> v1(10,2);
cout << boolalpha << q1.empty() << endl;
print(q1.begin(),q1.end());
cout << q1.size() << endl;
q1.assign(4,10);
cout << q1.size() << endl;
q1.insert(q1.begin(),3);
q1.insert(q1.end(),v1.begin(),v1.end());
cout << "----------------" << endl;
cout << q1[0] << endl;
cout << q1.at(0) << endl;
cout << q1.front() << endl;
cout << q1.back() << endl;
cout << "-----------------" << endl;
print(q1.begin(),q1.end());
cout << "----------------" << endl;
deque<int>::iterator dt;
for (dt = q1.begin(); dt != q1.end();dt++){
cout << *dt << " ";
}
cout << endl;
cout << "-------------------" << endl;
q1.push_back(1);
q1.push_front(3);
print(q1.begin(),q1.end());
q1.pop_back();
q1.pop_front();
print(q1.begin(), q1.end());
q1.resize(20);
cout << q1.size() << endl;
print(q1.begin(), q1.end());
q1.emplace(q1.begin(),10);
print(q1.begin(), q1.end());
cout << "------------------" << endl;
return 0;
}