1.deque容器基本概念
1.1功能:
*双端数组,可以对头端进行删除操作
1.2deque与vector区别:
*vector对于头部的插入删除效率低,数据量越大,效率越低
*deque相对而言,对头部的插入删除速度会比vector块
*vector访问数组时的速度会比deque快,这和两者内部实现有关系
1.3函数原型:
push-front() 头部插入
pop-front() 头部删除
push_back() 尾部插入
pop_back() 尾部删除
insert() 指定位置插入数据
front() 第一个元素
back() 最后一个元素
begin() 起始迭代器
end() 结束迭代器
1.4deque内部工作原理:
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得deque时像一片连续的内存空间
中控器_
| |
| | 缓冲区(里面是真实数据)
|______| ___________________________
节点/地址 | 0x01 |________\ | ele | ele | ele |
|______| / |______|__________|_________|
| 0x02 |
|______|
| |
|______|
(数据插入的话就是插到缓冲区后面,如果缓冲区内存不够,则再新开一条缓冲区,然后用中控器的一个节点记录)
所以其访问是通过中控器的地址访问缓冲区,因此其访问速度较慢,上一个缓冲区访问完了,通过地址访问下一个
注:deque容器的迭代器也是支持随机访问的
2.deque构造函数
功能描述:
*deque容器构造
函数原型:
*deque<T>deqT; //默认构造形式
*deque(beg,end); //构造函数将[beg,end)区间的元素拷贝给本身
*deque(n,elem); //构造函数将n个elem拷贝给本身
*deque(const deque &deq);//拷贝构造
实例:
cpp
//deque构造函数
void printDeque(const deque<int>& d)//这里加了const之后,下面的迭代器也得加const
{
for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
void test01()
{
deque<int>d1;
for (int i = 0; i < 10; i++)
{
d1.push_back(i);
}
printDeque(d1);
deque<int>d2(d1.begin(),d1.end());//把d1这个区间里面的数据赋值给d2
printDeque(d2);
deque<int>d3(10,100);//10个100
printDeque(d3);
deque<int>d4(d3);
printDeque(d4);
}
仅个人看视频笔记与理解,如有误可指出谢谢