C++——deque容器的基本概念与构造函数

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);
}

仅个人看视频笔记与理解,如有误可指出谢谢

相关推荐
_Twink1e11 小时前
openJiuwen 实训营 Day 1 · WorkSwarm 入门教程
开发语言·c++·openjiuwen
dong_junshuai12 小时前
每天一个开源项目#87 fmt:24.5K Stars 的 C++ 格式化核心
c++·开源·github
雪的季节12 小时前
Multisim14.0的详细中文安装步骤【附安装包】
c++
Persistent的粽子!13 小时前
C++:类与对象(二)
开发语言·c++
蒸蒸yyyyzwd14 小时前
cpp 选手备战秋招学习笔记 day23
c++·求职招聘
.YM.Z14 小时前
C++ STL 容器深度剖析:vector 与 list 的模拟实现及对比
开发语言·c++·vector·list
mengzhi啊16 小时前
QEventLoop loop配合loop.exec();替代while(1)。电脑cpu占用为0,使用while(1)cpu占用率100%
c++·qt
HugoStudio_SWAN16 小时前
洛谷 P1319 / P1320 压缩技术——同一枚硬币的正反面
c++·学习·程序人生·算法
小小晓.16 小时前
C++单例模式万字详解:6种实现演进+线程安全彻底解决+CRTP终极模板
c++·单例模式
j7~17 小时前
【C++11】C++11 新特性全套详解(列表初始化、右值引用、lambda 表达式、function 与 bind 包装器等)
c++·右值引用·lambda表达式·可变参数模板·移动语义·包装器·c++11发展史