第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)

这篇具有很好参考价值的文章主要介绍了第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

deque容器

deque容器基本概念

功能:
双端数组,可以对头端进行插入删除操作
deque与vector区别
vector对于头部的插入删除效率低,数据量越大,效率越低
deque相对而言,对头部的插入删除速度比vector快
vector访问元素的速度会比deque快,这和两者内部实现有关
第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频),编程语言学习,学习,c++,开发语言
deque内部工作原理:
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频),编程语言学习,学习,c++,开发语言
deque容器的迭代器也是支持随机访问的

笔记:学到这里因为数据结构才把链表学习完所以看到这里有一点懵。不过弹幕中的一句话让我有了点启发,说是deque就是链表+数组

deque构造函数

功能描述:
deque容器构造
函数原型:

deque<T> deqT; //默认构造形式
deque(beg,end); //构造函数将[beg,end)区间中的元素拷贝给本身
deque(n,elem); //构造函数将n个elem拷贝给本身
deque(const deque &deq); //拷贝构造函数
#include<iostream>
using namespace std;
#include<deque>

//deque构造函数

void printDeque(const deque<int>&d)
{
	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());
	printDeque(d2);

	deque<int>d3(10, 33);
	printDeque(d3);

	deque<int>d4(d3);
	printDeque(d4);
}

int main()
{
	test01();
	return 0;
}

第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频),编程语言学习,学习,c++,开发语言
总结:deque容器和vector容器的构造方式几乎一致,灵活使用即可

deque赋值操作

功能描述:
给deque容器进行赋值

函数原型:

deque& operator=(const deque &deq); //重载等号操作符
assign(beg,end); //将[beg,end)区间中的数据拷贝赋值给本身
assign(n,elem); //将n个elem拷贝赋值给本身
#include<iostream>
using namespace std;
#include<deque>

//deque容器赋值操作

void printDeque(const deque<int>&d)
{
	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);

	//operator=赋值
	deque<int>d2;
	d2 = d1;
	printDeque(d2);

	//assign赋值
	deque<int>d3;
	d3.assign(d1.begin(), d1.end());
	printDeque(d3);

	deque<int>d4;
	d4.assign(10, 88);
	printDeque(d4);
}

int main()
{
	test01();
	return 0;
}

第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频),编程语言学习,学习,c++,开发语言
总结:deque赋值操作也与vector相同,需熟练掌握

deque大小操作

功能描述:
对deque容器的大小进行操作

函数原型:

deque.empty(); //判断容器是否为空
deque.size(); //返回容器中元素的个数
deque.resize(); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
deque.resize(num,elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
#include<iostream>
using namespace std;
#include<deque>

//deque容器大小操作

void printDeque(const deque<int>&d)
{
	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);

	if (d1.empty())
	{
		cout << "d1为空" << endl;
	}
	else
	{
		cout << "d1不为空" << endl;
		cout << "d1的大小为:" << d1.size() << endl;
		//deque容器没有容量概念,这和它内部结构有关
	}

	//重新指定大小
	d1.resize(15);
	printDeque(d1);
	d1.resize(18,1);
	printDeque(d1);
	d1.resize(5);
	printDeque(d1);

}

int main()
{
	test01();
	return 0;
}

第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频),编程语言学习,学习,c++,开发语言
总结:
deque没有容量的概念
判断是否为空 —empty
返回元素个数 —size
重新指定个数 —resize文章来源地址https://www.toymoban.com/news/detail-643448.html

到了这里,关于第一百二十四天学习记录:C++提高:STL-deque容器(上)(黑马教学视频)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第一百二十一天学习记录:线性代数:矩阵乘法运算(宋浩板书)

    在编程和学习数据结构的过程中,发现有些算法会用到矩阵和矩阵的乘法运算,因此先将这一个知识点学习一下。 乘法☆ 总结三条不满足

    2024年02月13日
    浏览(28)
  • 第一百二十八天学习记录:数据结构与算法基础:栈和队列(上)(王卓教学视频)

    1、栈和队列是两种常用的、重要的数据结构 2、栈和队列是限定插入和删除只能在表的“端点”进行的线性表 线性表可以在任意一个位置插入和删除,栈只能在最后位置插入和删除 只能删除第一个元素 栈和队列是线性表的子集(是插入和删除位置受限的线性表)

    2024年02月13日
    浏览(35)
  • 第一百二十七回 空安全

    我们在上一章回中介绍了级联操作符相关的内容,本章回中将介绍 空安全 .闲话休提,让我们一起Talk Flutter吧。 在编译语言中都有空指针或者空对象(null),它们会引起程序的异常。在移动开发中如果使用Java和OC开发程序,发生这类异常后会使应用程序被系统强制关闭,业内通

    2024年02月11日
    浏览(31)
  • 一百二十五、Hive——hive性能优化

    在Hive中运行SQL,性能优化是个大坑! 总结一些 hive性能优化的参数设置 一、hive性能优化 set hive.vectorized.execution.enabled=false; set hive.auto.convert.join=false; --map阶段内存不足 set mapreduce.map.memory.mb=10150; set mapreduce.map.java.opts=-Xmx6144m; -- reduce阶段内存不足 set mapreduce.reduce.memory.mb=10150;

    2024年02月09日
    浏览(28)
  • Emacs之实现鼠标/键盘选中即拷贝外界内容(一百二十)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月15日
    浏览(35)
  • ThinkpadP15V局域网唤醒电脑开关机(一百二十八)

    一、唤醒端各平台工具:Android/Windows/IOS   二、被唤醒端配置:ThinkpadP15V(Linux OS)

    2024年02月17日
    浏览(35)
  • 第一百二十五回 dart中List和Map的常见用法

    我们在上一章回中介绍了Flexible组件相关的内容,本章回中将介绍 dart中的List和Map .闲话休提,让我们一起Talk Flutter吧。 我们在这里介绍的List也叫列表,它表示一组相同类型变量的集合。map也叫映射或者字典,它表示键值对的组合。在高级语言中都有list和map,比如Java,Swift以及

    2024年02月10日
    浏览(29)
  • Emacs之改造最快的文件搜索工具fd-dired(基于fd命令)(一百二十一)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:An

    2024年02月15日
    浏览(32)
  • 第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)

    main.cpp代码: myarray.hpp代码: 输出: 总结:能够利用所学知识点实现通用的数组。 个人感悟:学习了这个案例之后接下来的课程就是STL了,STL其实在我工作中写代码时经常碰到,尤其是在读同事代码的时候,因为没有学过,通过自行百度获得碎片的知识导致读起来很很吃力

    2024年02月16日
    浏览(36)
  • 第一百一十五天学习记录:C++提高:STL初识(黑马教学视频)

    1、长久以来,软件界一直希望建立一种可重复利用的东西 2、C++的面向对象和泛型编程思想,目的就是重复性的提升 3、大多数情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作 4、为了建立数据结构和算法的一套标准,诞生了STL 1、STL,标准模板库 2、

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包