双端队列deque:两端都可以插入和删除
1:deque构造函数
void test01(){
deque<int>d;
for(int i=0;i<10;i++){
d.push_back(i);
}
deque<int>d1(d.begin(),d.end());
deque<int>d2(10,100);
deque<int>d3(d1);
print(d);
print(d1);
print(d2);
print(d3);
}//deque构造函数
2:赋值
void test02(){
deque<int>d;
for(int i=0;i<10;i++){
d.push_back(i);
}
print(d);
deque<int>d1;
d1=d;
print(d1);
deque<int>d2;
d2.assign(d.begin(),d.end());
print(d2);
deque<int>d3;
d3.assign(10,100);
print(d3);
}//赋值(和vector相似)
3:大小
void test03(){
deque<int>d;
for(int i=0;i<9;i++){
d.push_back(i);
}
print(d);
if(d.empty()){
cout<<"d null";
}
else{
cout<<"D not null";
cout<<d.size()<<endl;
}
//重新指定大小
d.resize(15,1);//resize(大小,填充数)
//d.resize(12)重新设置大小
print(d);
}//大小操作 deque没有容量概念
4:插入
void test04(){
deque<int>d;
//尾插 10 20
d.push_back(10);
d.push_back(20);
//头插 200 100 10 20
d.push_front(100);
d.push_front(200);
print(d);
//头删 100 10 20
d.pop_front();
print(d);
//尾删 100 10
d.pop_back();
print(d);
//insert插入
d.insert(d.begin(),50);//50 100 10
print(d);
d.insert(d.begin(),2,30);//30 30 50 100 10
print(d);
deque<int>d1;
d1.push_back(1);
d1.push_back(2);
d1.push_back(3);
d.insert(d.begin(),d1.begin(),d1.end());//1 2 3 30 30 50 100 10
print(d);
}//插入
5:清除
void test05(){
deque<int>d;
d.push_back(1);
d.push_back(2);
d.push_back(3);
d.push_back(4);
d.erase(d.begin());
deque<int>::iterator it=d.begin();
it++;
d.erase(it);
print(d);
d.erase(d.begin(),d.end());//区间删除
d.clear();//清除
}//删除
6:存取
void test06(){
deque<int>d;
d.push_back(1);
d.push_back(2);
d.push_back(3);
d.push_back(4);
//[]访问
for(int i=0;i<d.size();i++){
cout<<d[i]<<endl;
}
//at访问
for(int i=0;i<d.size();i++){
cout<<d.at(i)<<endl;
}
cout<<d.front();
cout<<d.back();
}//容器的存取
7:排序
void test07(){
deque<int>d;
d.push_back(1);
d.push_back(7);
d.push_back(3);
d.push_back(5);
print(d);
sort(d.begin(),d.end());
print(d);
}//排序