
C++
文章平均质量分 61
三月江东
这个作者很懒,什么都没留下…
展开
-
STL算法——常用集合算法(set_intersection、set_union、set_difference)
算法简介:功能描述:函数原型:功能描述:函数原型:功能描述:函数原型:原创 2022-06-27 21:13:09 · 144 阅读 · 0 评论 -
STL算法——常用算术生成算法(accumulate、fill)
注意:算法简介:功能描述:函数原型:示例:5.5.2 fill功能描述:函数原型:示例:原创 2022-06-27 21:11:57 · 289 阅读 · 0 评论 -
STL算法——常用拷贝和替换算法(copy、replace、replace_if、swap)
算法简介:功能描述:函数原型:示例:5.4.2 replace功能描述:函数原型:示例:5.4.3 replace_if功能描述:函数原型:示例:5.4.4 swap功能描述:函数原型:示例:原创 2022-06-27 21:11:00 · 467 阅读 · 0 评论 -
STL算法——常用排序算法(sort、random_suffle、merge、reverse)
算法简介:功能描述:函数原型:示例:5.3.2 random_shuffle功能描述:函数原型:示例:5.3.3 merge功能描述:函数原型:示例:5.3.4 reverse功能描述:函数原型:示例:原创 2022-06-27 21:10:07 · 497 阅读 · 0 评论 -
STL算法——常用查找算法(find、find_if、adjacent_find、binary_search、count、count_if)
学习目标:算法简介:功能描述:函数原型:示例:5.2.2 find_if功能描述:函数原型:示例:5.2.3 adjacent_find功能描述:函数原型:示例:5.2.4 binary_search功能描述:函数原型:示例:5.2.5 count功能描述:函数原型:示例:5.2.6 count_if功能描述:函数原型:示例:...原创 2022-06-27 21:09:10 · 647 阅读 · 0 评论 -
STL算法——常用遍历算法(for_each、transform)
算法简介:功能描述:函数原型:示例:5.1.2 transform功能描述:函数原型:示例:原创 2022-06-27 21:07:01 · 185 阅读 · 0 评论 -
STL函数对象(C++)
概念:本质:特点:4.2 谓词4.2.1 谓词概念概念:4.2.3 二元谓词4.3 内建函数对象4.3.1 内建函数对象意义概念:分类:用法:功能描述:仿函数原型:示例:4.3.3 关系仿函数函数功能:仿函数原型:示例:4.3.4 逻辑仿函数功能描述:函数原型:示例:逻辑仿函数实际应用较少,了解即可...原创 2022-06-27 21:04:43 · 87 阅读 · 0 评论 -
Map和Multimap容器(C++)
简介:本质:优点:map 和multimap 区别:函数原型:赋值:示例:3.9.3 map 大小和交换功能描述:函数原型:函数原型:3.9.5 map 查找和统计函数原型:3.9.6 map 容器排序主要技术点:原创 2022-06-27 21:03:03 · 254 阅读 · 0 评论 -
Set和Multiset容器(C++)
简介:本质:set 和multiset 区别:功能描述:构造:赋值:示例:3.8.3 set 大小和交换功能描述:函数原型:3.8.4 set 插入和删除功能描述:函数原型:3.8.5 set 查找和统计功能描述:函数原型:示例:3.8.6 set 和 multiset区别区别:3.8.7 pair 对组创建功能描述:两种创建方式:示例:3.8.8 set 容器排序学习目标:主要技术点:示例1:set存放内置数据类型示例2:set存放自定义数据类型...原创 2022-06-27 21:02:26 · 217 阅读 · 0 评论 -
List容器(C++)
功能:将数据进行链式存储 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成:链表由一系列结点组成 节点的组成:一个时存储数据元素的数据域,另一个是存储下一个结点地址的指针域 STL中的链表是一个双向循环链表 由于链表的存储方式并不是连续的内存空间,因此链表list 中的迭代器只支持前移和后移,属于双向迭代器list优点:list缺点: List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这才vecto原创 2022-06-27 21:01:35 · 754 阅读 · 0 评论 -
Queue容器(C++)
概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,他有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有对头和对位才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为 — 入队(push)队列中出数据称为 — 出队(pop)功能描述:构造函数:赋值操作:数据存取:大小操作:示例:...原创 2022-06-21 10:39:30 · 148 阅读 · 0 评论 -
Stack容器(C++)
**概念:**stack 是一种先进后出(First In Last Out,FILO)的数据结构,他只有一个出口栈中只有顶端的元素可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈(push)栈中弹出数据称为 — 出栈(pop)功能描述:构造函数:赋值操作:数据存取:大小操作:示例:...原创 2022-06-21 10:38:42 · 332 阅读 · 0 评论 -
deque容器(C++)
功能:deque 与vector 区别:deque 内部工作原理:功能描述:函数原型:示例:3.3.3 deque 赋值操作功能描述:容器原型:示例:3.3.4 deque 大小操作功能描述:函数原型: //判断容器是否为空 //返回容器中元素的个数 //重新指定容器的长度为num,若容器变长,则以默认值填充新位置 //如果容器变短,原创 2022-06-21 10:38:07 · 135 阅读 · 0 评论 -
Vector容器(C++)
功能:vector与普通数组区别:动态扩展:功能描述:函数原型:示例:3.2.3 vector 赋值操作功能描述:函数原型:3.2.4 vector 容量和大小功能描述:函数原型: //判断容器是否为空 //容器的容量 //返回容器中元素的个数 //重新指定容器的长度为num,若容器变长,则以默认值填充新位置原创 2022-06-20 10:55:16 · 152 阅读 · 0 评论 -
String容器(C++)
本质:string 和 char 区别:*特点: string 类内部封装了很多成员方法 例如:查找find,拷贝copy,删除delete,替换replace,插入insert string 查找所分配的内存,不用担心复制越界和取值越界,由类内部进行负责构造函数原型: //创建一个空的字符串 例如:string str;; //使用字符串s初始化 //使用一个string 对象初始化另一个string 对象 /原创 2022-06-20 10:53:53 · 86 阅读 · 0 评论 -
C++提高编程——2 STL初识
STL 大体分为六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:置物之所也STL容器就是将应用最广泛的一些数据结构实现出来常用的数据结构:数组、链表、树、栈、队列、映射表等这些容器分为序列式容器和关联式容器两种算法:问题之解法也有限的步骤,解决逻辑或数学上的问题,这一门学科我们叫做算法(Algorithm)算法分为:质变算法和非质变算法质变算法:是指运算过程中会更改区间内得元素的内容。例如拷贝、替换、删除等等非质变算法:是指运算过程中不会更改区间内的元素内容。例如查找、计数、遍历、寻原创 2022-06-20 10:52:18 · 178 阅读 · 0 评论 -
C++提高编程——1 模板
模板就是建立通用的模具,大大提高复用性模板的特点:函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表语法:解释:示例:总结:注意事项:示例:2.3 函数模板案例案例描述:示例:2.4 普通函数与函数模板的区别区别:示例:2.5 普通函数与函数模板的调用规则 调用规则如下:2.6 模板的局限性局限性:例如: 在上述代码中提供的赋值操作,如果传入的a和b是一个数组,就无法实现了再例如: 在上述代码中,如果T的数据类型传入的是像原创 2022-06-17 23:08:07 · 100 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.4 友元
在程序里,有些私有属性 也想让类外一些函数或者类进行访问,就需要用到友元的技术 友元的目的就是让一个函数或者类 访问另一个类中私有成员 友元的关键字为 友元的三种实现原创 2022-06-04 20:58:12 · 149 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.2 对象的初始化和清理
对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 C++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象的初始化和清理。 对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数,但其是空实现。构造函数语法:析构函数语法:4.2.2 构造函数的分类及调用 两种分类方式: 按参数原创 2022-06-04 20:51:32 · 186 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.3 C++对象模型和this指针
在C++中,类内的成员变量和成员函数分开储存 只有非静态成员变量才属于类的对象上4.3.2 this指针概念 通过4.3.1我们知道在C++中成员变量和成员函数是分开储存的 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码 那么问题是:这一块代码是如何区分那个对象调用自己的呢? C++通过提供特殊对象指针,指针,解决上述问题。 指针指向被调用的成员函数所属的对象 指针是隐含每一个非静态成员函数内的一种指针 指针不需要定义,直接使用即可 指针的用途:原创 2022-06-04 20:52:58 · 166 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.1 封装
C++面向对象的三大特性为:封装、继承、多态 C++认为万事万物皆为对象,对象上有其属性和行为 例如: 人可以作为对象,属性有姓名、年龄、身高…,行为有走、跑、跳… 车可以作为对象,属性有轮胎、方向盘…,行为有载人、放音乐… 具有相同性质的对象,我们可以抽象为类,人属于人类,车属于车类 封装是C++面对对象的三大特性之一 封装的意义: 封装意义一: 在设计类的时候,属性和行为写在一起,表现事物 语法: 封装意义二: 类在设计时,可以把属性和行为放在不同权限下,加以控制原创 2022-06-04 20:49:43 · 112 阅读 · 0 评论 -
C++核心编程——3 函数提高
在C++中,函数的形参列表中的形参是可以有默认值的 语法:3.2 函数占位参数 C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置 语法:3.3 函数重载3.3.1 函数重载概述 **作用:**函数名可以相同,提高复用性 函数重载满足条件 **注意:**函数的返回值不可以作为函数重载的条件原创 2022-06-02 18:04:14 · 107 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.7 多态
多态是C++面向对象三大特性之一 多态分为两类: 静态多态和动态多态的区别:总结:多态满足条件:多态使用条件:重写:函数返回值类型 函数名 参数列表 完全一致称为重写 案例描述: 分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算机类 多态的优点:4.7.3 纯虚函数和抽象类 在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容 因此可以将虚函数改为纯虚函数 纯虚函数语法: 当类中有了纯虚函数,这个类也称为抽象类 抽象类特点:4.7.4 多态原创 2022-06-06 21:21:29 · 207 阅读 · 0 评论 -
C++结构体小结
1.结构体的定义和使用 语法: 通过结构体创建变量的方式有三种: struct 结构体名 变量名 struct 结构体名 变量名 = { 成员1值 , 成员2值…} 定义结构体时顺便创建变量 注意:关键字在初始化时也可省略2.结构体数组**作用:**将自定义的结构体放入数组中方便维护语法:3.结构体指针 **作用:**通过指针访问结构体中的成员利用操作符可以通过结构体指针访问结构体属性4.结构体嵌套结构体 **作用:**结构体中的成员可以是另一个结构体 **例如:**每个原创 2022-06-01 15:52:51 · 204 阅读 · 0 评论 -
C++指针小结
**1.占用内存:**在32为操作系统下(即x86)指针占4个字节空间;在64位操作系统下指针占8个字节空间,不管是什么数据类型。**2.空指针:**指针变量指向内存中编号为0的空间; **用途:**初始化指针变量 **注意:**空指针的内存是不可以访问的;内存编号0~255为系统占用内存,不允许用户访问**3.野指针:**指针变量指向非法内存空间 在程序中尽量避免出现野指针**总结:**空指针和野指针都不是我们申请的空间,因此不要访问4.修饰指针修饰指针 —常量指针:指针的指向可以修改,但原创 2022-06-01 14:23:58 · 121 阅读 · 0 评论 -
C++核心编程——1 内存分区模型
C++程序在执行时,将内存大方向划分为4个区域 内存四区存在的意义: 不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程 在程序编译后生成了可执行程序,未执行该程序前分为两个区域: 代码区: 存放CPU执行的机器指令 代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可 代码区是只读的,使其只读的原因是防止程序异外修改了它的指令 全局区: 全局变量和静态变量存放在此 全局区还包含了常量区,字符串常量和其他常量也存放在此 该区域的数据在程原创 2022-06-02 15:45:46 · 86 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.5 运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 作用:实现两个自定义数据类型相加的运算4.5.2 左移运算符重载 作用:可以输出自定义数据类型4.5.3 递增运算符重载 作用:通过重载递增运算符,实现自己的整型数据4.5.4 赋值运算符重载 C++编译器至少给一个类添加4个函数 如果类中有属性指向堆区,做赋值操作也会出现深浅拷贝问题4.5.5 关系运算符重载 **作用:**重载关系运算符,可以让两个自定义类型对象进行对比操作...原创 2022-06-04 22:50:39 · 120 阅读 · 0 评论 -
C++核心编程——4 类和对象- 4.6 继承
继承是面向对象三大特性之一 有些类与类之间存在特殊关系,定义某些类时,下级别的成员除了拥有上一级的共性,还有自己的特性 这个时候我们就可以考虑利用继承的技术,减少重复代码 语法: 例如我们看到很多网站中,都有公共的头部,公共的的底部,甚至公共的左侧列表,只有中心内容不同 接下来我们分别利用普通写法和继承写法来实现网页中的内容,看一下继承存在的意义以及好处 派生类中的成员包含两大部分: 一类是从基类继承过来的,一类是自己增加的成员 从基类继承过来的表现其共性,而新增的成员体现了其个性原创 2022-06-06 16:59:21 · 164 阅读 · 0 评论 -
C++核心编程——2 引用
**作用:**给变量起别名 语法:2.2 引用的注意事项引用必须初始化引用在初始化后,不可以改变2.3 引用做函数参数 **作用:**函数传参时,可以利用引用的技术让形参修饰实参 **优点:**可以简化指针修改实参**总结:**通过引用参数产生的效果通地址传递是一样的。引用的语法更简单清楚。 作用:引用可以作为函数的返回值存在 注意:不要返回局部变量引用 用法:函数调用作为左值2.5 引用的本质 本质:引用的本质在C++内部实现是一个指针常量结论:C++推荐使用引用原创 2022-06-02 17:01:10 · 79 阅读 · 0 评论 -
C++核心编程——5 文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将数据持久化 C++中对文件操作需要包含头文件 文件类型分为两种: 操作文件的三大类: 写文件步骤如下: 1、包含头文件 2、创建流对象 3、打开文件 4、写数据 5、关闭文件 文件打开方式:**注意:**文件打开方式可以配合使用,利用操作符**例如:**用二进制方式写文件总结: 读文件与写文件步骤相似,但是读取方式比较多 读文件步骤如下: 1、包含头文件 2原创 2022-06-06 23:07:27 · 121 阅读 · 0 评论