1.功能:双端数组,可以对头端进行插入和删除的操作
2.deque与vector的区别:
2.1 vector对于头部元素插入删除效率低,数据量越大,效率越低
2.2 deque对头部的插入删除速度比vector快
2.3 vector访问元素的速度比的却快,两者内部结构不同
3.deque容器构造函数及方法
deque<数据类型> deqT | 默认构造函数 |
---|---|
deque(beg,end) | 构造函数将[beg,end)区间中的元素拷贝给本身 |
deque(n , elem) | 构造函数将n个elem拷贝给本身 |
deque(const deque *deq) | 拷贝构造函数 |
注意:deque没有容量概念
演示构造函数代码段
#include <iostream>
#include <string>
#include <deque>
using namespace std;
void printDeque(const deque<int> &d)
{
for(deque<int> :: const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
//deque赋值
void test()
{
deque<int> d1;
for(int i = 0; i < 10; i++)
{
d1.push_back(i);
}
printDeque(d1);
deque<int> d2(d1.begin(),d1.end());
printDeque(d2);
deque<int> d3(10,100);
printDeque(d3);
deque<int>d4(d3);
printDeque(d4);
}
int main()
{
test();
return 0;
}
4.deque的方法
deque& operator=(const deque &deq) | 重载等号操作符 |
---|---|
assign(beg, end) | 将[beg, end)区间中的数据拷贝赋值给本身 |
assign(n, elem) | 将n个elem拷贝赋值给本身 |
deque.empty() | 判断容器是否为空,空则返回1,不为空返回0 |
deque.size() | 返回容器中元素的个数 |
deque.resize(num) | 重载容器长度为num,变长则默认值填充新位置,变短则删除末尾超出元素 |
deque.resize(num,elem) | 重载容器长度为num,边长则用elem填充新位置,变短则产出末尾超出元素 |
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)区间的数据,返回下一个数据位置 |
rease(pos) | 删除pos位置数据,返回下一个数据位置 |
at(int index) | 返回索引index所指的数据 |
operator[index] | 返回索引index所指的数据 |
front() | 返回容器中第一个元素 |
back() | 返回容器中最后一个元素 |
sort(v.begin(),v.end())可以从大到小对容器数据进行排序,vector也可以用sort排序