STL笔记【deque容器 双端队列】

deque容器的底层

有一个叫做中控器的东西去控制这个双端队列,中控器就类似操作系统中的页表,页表中记录着每个页框的地址;同样中控器就记录着每个缓冲区的位置,对于头插就在前端插入,尾插就在尾端插入,如果内存不够了就重新申请一片缓冲器,将其地址记录在中控器中。

以下图片截取自互联网
在这里插入图片描述

deque的构造赋值和插入删除

int main() {
	deque<int> d;//默认构造函数
	d.push_back(20);//尾插
	d.push_back(25);
	d.push_front(1);//头插
	d.push_front(2);
	d.pop_front();//头删
	d.pop_back();//尾删
	deque<int> d1(d);//拷贝构造函数
	deque<int> d2(5,6);//初始化d2将5个6给他
	deque<int> d3(d.begin(), d.end());//将d的迭代器之间的数给d3

	d2 = d3; //重载运算符 赋值操作
	d2.assign(5, 6);//assign()函数,将5个6赋值给d2
	d2.assign(d3.begin(), d3.end());//将迭代器中的数给d2赋值上去

	d2.insert(d2.begin(),5);//在d2的迭代器位置插入5
	d2.insert(d2.begin(),2, 5);//在d2的迭代器位置插入2个5
	d2.insert(d2.begin(), d.begin(),d.end());//在d2的迭代器位置d的迭代器位置的数据

	d2.erase(d2.begin());//删除迭代器位置数据
	d2.erase(d2.begin(), d2.end());//删除迭代器之间的数据
	d2.clear();//清空容器

	system("pause");
	return 0;
}

deque的数据存取和容量大小

**int main() {
	deque<int> d;
	d.push_back(20);
	d.push_back(25);
	d.push_front(1);

	d.empty();//判空
	d.size();//容器大小
	d.resize(10);//重新指定大小,如果比原数据大,就多的部分自动补0,比原数据小,就截取
	d.resize(10, 2);//多的部分自动补2
	//d.capacity();//非法操作,与vector不同,不存在这个函数

	int num = d[0];//运算符重载,获取第一个数,与数组类似
	num = d.at(0);//at()函数,获取元素
	num = d.front();//返回第一个数
	num = d.back();//返回最后一个数

	system("pause");
	return 0;
}**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值