双端数组,可以对头端进行插入删除操作
-
deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低
-
deque相对而言,对头部的插入删除速度回比vector快
-
vector访问元素时的速度会比deque快,这和两者内部实现有关
-
deque构造函数
-
赋值
-
大小
-
插入和删除
-
数据存取
-
排序
#include<iostream>
#include<vector>
#include<string>
#include<deque>
#include <algorithm>
using namespace std;//只读迭代器const_iterator
void printdeque(const deque<int> &d)
{for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++){//*it = 100; 不可以修改cout << *it << " ";}cout << endl;
}//deque构造函数
void test01()
{//deque<T> deqT; //默认构造形式//deque(beg, end); //构造函数将[beg, end)区间中的元素拷贝给本身。//deque(n, elem); //构造函数将n个elem拷贝给本身。//deque(const deque & deq); //拷贝构造函数deque<int>d1;d1.push_back(1);d1.push_back(1);d1.push_back(1);d1.push_back(1);printdeque(d1);deque<int> d2(d1.begin(), d1.end());printdeque(d2);deque<int>d3(10, 100);printdeque(d3);deque<int>d4 = d3;printdeque(d4);}//赋值
void test02()
{deque<int> d1;for (int i = 0; i < 10; i++){d1.push_back(i);}printdeque(d1);deque<int>d2;d2 = d1;printdeque(d2);deque<int>d3;d3.assign(d1.begin(), d1.end());printdeque(d3);deque<int> d4;d4.assign(10, 100);printdeque(d4);
}//deque大小,与vector不一样,deque没有容量
void test03()
{deque<int> d1;for (int i = 0; i < 10; i++){d1.push_back(i);}printdeque(d1);//判断容器是否为空if (d1.empty()){cout << "d1为空" << endl;}else{cout << "d1不为空" << endl;//统计大小cout << "d1的大小为: " << d1.size() << endl;}//从新指定大小d1.resize(15, 1);printdeque(d1);d1.resize(5);printdeque(d1);
}//插入和删除
void test04()
{//push_back(elem); //在容器尾部添加一个数据//push_front(elem); //在容器头部插入一个数据//pop_back(); //删除容器最后一个数据//pop_front(); //删除容器第一个数据//insert(pos, elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。//insert(pos, n, elem); //在pos位置插入n个elem数据,无返回值。//insert(pos, beg, end); //在pos位置插入[beg,end)区间的数据,无返回值。//clear(); //清空容器的所有数据//erase(beg, end); //删除[beg,end)区间的数据,返回下一个数据的位置。//erase(pos); //删除pos位置的数据,返回下一个数据的位置deque<int> d1;//尾插d1.push_back(10);d1.push_back(20);//头插d1.push_front(100);d1.push_front(200);printdeque(d1);//尾删d1.pop_back();//头删d1.pop_front();printdeque(d1);//插入d1.insert(d1.begin(), 100);printdeque(d1);d1.insert(d1.begin(),2, 1000);printdeque(d1);d1.insert(d1.begin(),d1.begin(), d1.end());printdeque(d1);}//数据存取
void test05()
{deque<int>d1;d1.push_back(10);d1.push_back(10);d1.push_back(10);d1.push_back(10);for (int i = 0; i < d1.size(); i++){cout << d1[i] << " ";}cout << endl;for (int i = 0; i < d1.size(); i++){cout << d1.at(i) << " ";}//头尾cout<<"头"<<d1.front();cout << "尾" << d1.back();}//deque排序
void test06()
{//sort(iterator beg, iterator end) //对beg和end区间内元素进行排序deque<int> d;d.push_back(10);d.push_back(101);d.push_back(10);d.push_back(8);printdeque(d);sort(d.begin()+1, d.end()-1);printdeque(d);}
int main()
{test01();test02();test03();test04();test05();test06();return 0;
}