自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 算法总结——前缀和、二维前缀和

暴力法遍历求区间和的时间复杂度是O(n),又因为查询m次,所以整个算法时间复杂度为O(m*n),如果n和m的数据量稍微大一点就有可能超时,而我们如果使用前缀和的方法来做的话,可以将求区间和的操作的时间复杂度降为O(1),大大提高了运算效率。②对于前缀和数组sum便于使用公式sum[i]=sum[i-1]+arr[i],避免处理边界,如果不从下标1处开始使用,上述公式是用不了的。查询的时间复杂度为O(1),整个算法的时间复杂度为O(n+m),n是数组长度,m是查询次数。共q行,每行输出一个询问的结果。

2024-01-16 20:30:26 434 3

原创 算法总结——单调栈

单调栈不是一种新的数据结构,它在结构上仍然是一个普通栈,只是在使用方法上有所区别。单调栈内的元素是单调递增或递减的,因此有单调递增栈和单调递减栈。单调递增栈: 栈中元素从栈底到栈顶是递增的。单调递减栈: 栈中元素从栈底到栈顶是递减的。我们在使用单调栈的时候,要时刻保证栈的单调性,例如,单调递增栈:栈中元素从栈底到栈顶是递增的。当一个元素入栈时,与栈顶比较,若比栈顶大,则入栈;若比栈项小,则弹出栈顶,直到这个数能入栈为止。注意:每个元素都一定入栈。

2024-01-16 17:32:26 1175 17

原创 Linux——常用命令大汇总(带你快速入门Linux)

Linux——常用命令大汇总(带你快速入门Linux)一.终端和shell命令解析器,命令格式二.目录基础知识及相关命令三.文件基础知识及相关命令:查找,链接,权限四.文本处理命令五.通配符的使用六.压缩包的管理七.用户管理及用户信息查询命令

2023-09-02 18:18:10 3338 69

原创 C++STL——map/multimap容器详解

map的特性是,所有元素都会根据元素的键值自动排序。map所有的元素都是pair,同时拥有实值和键值,pair的第一元素被视为键值,第二元素被视为实值,map不允许两个元素有相同的键值。map和multimap都是以红黑树为底层实现机制。map容器的迭代器:map提供了双向迭代器。我们可以通过map的迭代器改变map的键值吗?答案是不行,因为map的键值关系到map元素的排列规则,任意改变map键值将会严重破坏map组织。如果想要修改元素的实值,那么是可以的。

2023-08-04 16:10:43 792 54

原创 C++STL——deque容器详解

deque容器在逻辑上是一片连续的空间,但这只是一种假象,实际deque是由一段一段的定量的连续空间构成。deque最大的工作就是维护这些分段连续的内存空间的整体性的假象,并提供随机存取的接口,避开了(1)重新配置空间申请更大空间 (2)原数据复制新空间 (3)释放原空间三步骤,代价就是复杂的迭代器架构。deque内部存在中央控制器,记录与维护每段数据缓冲区(存储数据的空间)的内存地址,缓冲区中存储真实数据,保证可从容器的头部与尾部插入或删除元素。作用:操作deque容器的大小(即元素个数)。

2023-08-03 14:47:51 848 39

原创 C++STL——vector容器详解

vector的实现技术,关键在于其对大小的控制以及重新配置时的数据移动效率,一旦vector旧空间满了,如果客户每新增一个元素,vector内部只是扩充一个元素的空间,实为不智,因为只要是扩充空间(不论多大),其步骤就是“**配置新空间-数据移动-释放旧空间**”的大工程,时间成本很高,所以为了降低空间配置时的速度成本,vector实际配置的大小可能比客户端需求大一些,以备将来可能的扩充,这边是容量的概念。换句话说,一个vector的容量永远大于或等于其大小,一旦容量等于大小,便是满载,下次再有新增元素,

2023-07-30 21:25:26 1561 44

原创 C++STL——list容器及其常用操作(详解)

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域。另一个是存储下一个结点地址的指针域。list容器的数据结构是一个双向循环链表。链表其优缺点为:采用动态存储分配,不会造成内存浪费和溢出,链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素,链表灵活,但是空间和时间额外耗费较大

2023-07-27 09:26:10 2155 74

原创 C++——string容器常用操作汇总

本篇文章📃对string类的常用操作进行汇总,总共12个大类,分别是构造和析构函数、特性操作、字符操作、赋值操作、连接操作、交换操作、截取操作、比较操作、查找操作、替换操作、删除操作。前七个既可以用作字符串也可以用于存放数据的容器,而后五个(判断字符串是否相等、查找、替换、插入、删除)主要用于操作字符串,如果是其他格式的数据,这些函数也可以用,但意义不大。string容器可以看做一片连续的储存空间,有两个用途,一是用作字符串,二是用作存放数据的容器

2023-07-01 15:24:51 1206 53

原创 C++——详解类模板

函数可以定义函数模板,同样地,对于类来说,也可以定义一个类模板。类模板是针对成员数据类型不同的类的抽象,它不是一个具体实际的类,而是一个类型的类,一个类模板可以生成多种具体的类。类模板的定义格式如下所示:其中,template是声明类模板的关键字,表示声明一个模板,模板参数可以是一个,也可以是多个,可以是类型参数,也可以是非类型参数。类型参数由关键字class或typename及其后面的标识符构成。非类型参数由一个普通参数构成,代表模板定义中的一个常量。该例中,T为类型参数,a为非类型参数。

2023-06-29 16:29:26 477 41

原创 C++——详解类模板与友元函数

模板类的友元函数有三类: 1)非模板友元函数:友元函数不是模板函数,而是利用模板类参数生成的函数。2)约束模板友元函数:模板类实例化时,每个实例化的类对应一个友元函数。 3)非约束模板友元函数:模板类实例化时,如果实例化了n个类,也会实例化n个友元函数,每个实例化的类都拥有n个友元函数。

2023-06-24 17:58:06 1992 47

原创 C++核心编程——详解函数模板

C++提供了函数模板(function template.)所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体制定(泛型),用一个虚拟的类型来代表。这个通用函数就成为函数模板。凡是函数体相同的函数都可以用这个模板代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现不同函数的功能 。函数模板不会减少可执行程序的大小,因为编译器会根据调用时的参数类型进行相应的实例化。

2023-06-21 15:23:00 861 41

原创 C++概述——浅谈C++对C的拓展

C++中的++来自于C语言中的递增运算符++,该运算符将变量加1。C++起初也叫"c with clsss".通过名称表明,C++是对C的扩展,因此C++是C语言的超集,这意味着任何有效的c程序都是有效的C++程序。C++程序可以使用已有的C程序库。C++之父-本贾尼·斯特劳斯特卢普C++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。C++继承了C语言高效,简洁,快速和可移植的传统。C++融合了3种不同的编程方式:1️⃣C语言代表的过程性语言.

2023-06-09 19:09:27 1244 19

原创 C++核心编程——详解运算符重载

C++的一大特性就是重载,重载使得程序更加简洁高效。在C++中不只函数可以重载,运算符也可以重载,运算符重载主要是面向对象之间的。运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。运算符重载语法:在C++中,使用operator关键字定义运算符重载。运算符重载语法格式如下:函数的参数列表中参数个数取决于两个因素。通过案例两个对象相加演示“+”运算符的重载:通过上面案例可以知道,重载运算符并没有改变其原来的功能,只是增加了针对自定义数据类型的运算功能,具有了更广泛的

2023-06-07 17:59:22 898 44

原创 C++核心编程——初识STL——STL的基本概念和六大组件

STL是惠普实验室开发的一系列标准化组件的统称。它是由Alexander Stepanov、M eng Lee和David R.M usser在惠普实验室工作时开发出来的。在1994年,STL被纳入C++标准,成为C++库的重要组成部分。STL主要由六个部分组成:- 空间配置器(Allocator)- 适配器(Adapters)- 容器(Containers)- 迭代器(Iterator)- 仿函数(Functors)- 算法(Algorithm)>STL的一个基本理念就是将数据和操作分离,

2023-06-01 17:15:38 970 25

原创 C++核心编程—类和对象,类的三大特性——封装、继承、多态

生活中有各种各样的事物,如人、动物、植物等在C++中将这些称为对象。对象多种多样,各种对象的属性也不相同。例如狗的品种,毛色,年龄等各个对象都有自己的行为,例如球的弹跳和缩小;婴儿的唏哭睡眠走路和眨眼,汽车的加速、刹车和转弯,同时各个对象可能也有些共同之处,至少它们都是现实世界的组成部分。人们是通过研究对象的属性和观察它们的行为而认识对象的。可以把对象分成很多类,每一大类中又可分成若干小类,也就是说,类是可以分层的。同一类的对象具有许多相同的属性和行为,

2023-05-29 15:27:41 1407 73

原创 C语言学习笔记 | 进阶 | 文件操作详解(万字精心制作)

ANSIC 标准采用“缓冲文件系统”处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。缓冲区的大小根据C编译系统决定的。

2023-02-05 14:19:46 492 34

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除