deque与vector区别
vector对于头部的插入和删除效率低,尤其是当数据量过于大时
deque对于头部的插入和删除的速度较快
vector访问元素的速度会比deque快
deque的构造函数
函数原型(以int为例)
deque<int> d1;
deque<int> d2(d1);
deque<int> d3(d1.begin(),d1.end());
代码示例
deque<int> d1;
for (int i = 0; i <= 9; i++)
{
d1.push_back(i);// push_back是尾插法push_front是头插法
}
deque<int> d2(d1);
deque<int> d3(d1.begin(),d1.end());
deque的赋值操作
函数原型(以int为例)
deque<int> d1 = d1;(利用符号重载进行赋值操作)
assign(beg,end);
assgin(num,elem)
代码示例
void printDeque(const deque<int>& d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test1()
{
deque<int> d1;
for (int i = 0; i <= 9; i++)
{
d1.push_back(i);
}
printDeque(d1);
deque<int> d2 = d1;
printDeque(d2);
deque<int> d3;
d3.assign(d1.begin(),d1.end());
printDeque(d3);
}
deque的大小操作
函数原型(以int为例)
empty() //判断是否为空
size() //返回元素个数
resize() //重新指定容器长度
代码示例
void printDeque(const deque<int>& d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test1()
{
deque<int> d1;
for (int i = 0; i <= 9; i++)
{
d1.push_back(i);
}
printDeque(d1);
if(d1.empty())
{
cout << "The containner is empty" << endl;
}
else
{
cout << " Deque contain something and it has " << d1.size() << " element" << endl;
d1.resize(15,0);
printDeque(d1);
}
}
deque的插入和删除
函数原型(以int为例)
push_front() //头插法
push_back() //尾插法
pop_front() //删除首元素
pop_back() //删除末尾元素
insert(pop,elem) //在pop位置增加elem 切记用迭代器itrator
erase(pop)删除pop位的elem
代码示例
void printDeque(const deque<int>& d)
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test1()
{
deque<int> d1;
for (int i = 0; i <= 9; i++)
{
d1.push_back(i);
}
printDeque(d1);
d1.pop_front();
d1.push_front(100);
d1.pop_back();
d1.push_back(200);
printDeque(d1);
deque<int>:: itrator it = d1.begin();
d1.insert(it + 1,400);
d1.erase(d1.end() - 3);
printDeque(d1);
}
deque的存取操作
函数原型(以int为例)
at(int) //用的没[]习惯,暂且不说明
operator[]
front() //返回第一个元素
back() //返回最后一个元素
代码示例
void test1()
{
deque<int> d1;
for (int i = 0; i <= 9; i++)
{
d1.push_back(i);// push_back是尾插法push_front是头插法
}
for (deque<int>::iterator it = d1.begin(); it != d1.end(); it++)
{
cout << d1[i] << " ";
}
cout << endl;
}