deque容器的操作基本与vector容器相同,除了少一些方法,比如capacity()
此外,deque可以双端进行操作:
push_front(); //从头部插入数据
push_back(); //从尾部插入数据
pop_front(); //从头部删除数据
pop_back(); //从尾部删除数据
front(); //从头部取数据
back(); //从尾部取数据
#include<iostream>
#include<deque>
using namespace std;
void Print_deque(deque<int>& v){
for(deque<int>::iterator i=v.begin();i!=v.end();i++)
cout<<(*i)<<" ";
cout<<endl;
}
void test01(){
deque<int> v1;
//辅助操作
int arr[]={1,2,3,4};
deque<int> v2(arr,arr + sizeof(arr)/sizeof(int)); //注意数组arr的长度
deque<int> v3(v2.begin(),v2.end());
deque<int> v4(v3);
Print_deque(v1);
Print_deque(v2);
Print_deque(v3);
Print_deque(v4);
//交换操作
cout<<"====================="<<endl;
int arr01[]={5,6,7,8};
deque<int> v5(arr01,arr01+sizeof(arr01)/sizeof(int));
Print_deque(v4);
Print_deque(v5);
v5.swap(v4); //交换的是指针地址!
Print_deque(v4);
Print_deque(v5);
//大小操作
cout<<v5.size()<<endl;
if(v5.empty()==true)
cout<<"数组为空"<<endl;
else
cout<<"数组不为空"<<endl;
Print_deque(v5);
v5.resize(2); //重置数组大小
Print_deque(v5);
v5.resize(6);
Print_deque(v5);
v5.resize(8,1); //范围增大,并且填入1
Print_deque(v5);
//清空操作
v5.clear();
cout<<v5.size()<<endl;
}
void test02(){
deque<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
cout<<"返回第一个元素"<<v.front()<<endl;
cout<<"返回最后一个元素"<<v.back()<<endl;
//插入和删除
//头插法
v.insert(v.begin(),0);
//尾插法
v.insert(v.end(),4);
Print_deque(v);
//从第3个位置插入
v.insert(v.begin()+2,5); //insert(参数为迭代器) deque 支持随机访问
Print_deque(v);
//删除
v.erase(v.begin()+2,v.begin()+3);
Print_deque(v);
}
int main(){
test01();
test02();
return 0;
}