![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 60
右边是我女神
笔记仓库
展开
-
二叉树和其他树
文章目录树二叉树二叉树的特性二叉树的描述数组描述链表描述二叉树的遍历表达式树linkedBinaryTree树截止目前,我们已经知道了线性数据结构(数组、链表、栈、队列)和表数据结构(哈希表),但是这些数据结构不适合具有层次结构的数据。定义-1一棵树t是一个非空的有限元素的集合,其中一个元素为根,其余的元素组成t的子树。另外,还需要了解的专有名词有:孩子节点、双亲节点、兄弟节点、祖先节点、子孙节点、内部节点、外部节点。在这本书中,对深度、高度、级的定义是一致的,也都是从1开始。详细定义参考这里面的原创 2022-03-06 17:43:15 · 853 阅读 · 0 评论 -
C++_Primer 模板与泛型编程
文章目录定义模板函数模板模板参数模板类型参数非类型模板参数编写类型无关的代码模板编译类模板定义类模板实例化类模板类模板的成员函数模板参数模板参数与作用域默认模板实参成员模板模板是泛型编程的基础。定义模板我们希望编写一个程序来比较两个值的大小。这样的两个值可能是int、float、double、string,这样就需要需要不断地编写函数来实现对类型的重载。其实这些函数只有形参的类型不一样,那么模板就能很好地解决这一问题。函数模板template <typename T>int co原创 2022-03-04 23:52:21 · 322 阅读 · 0 评论 -
C++_Primer 面向对象程序设计
文章目录OOP(object-oriented programming)概述OOP(object-oriented programming)概述OOP的核心思想是数据抽象、继承和动态绑定。通过继承联系在一起的类构成一种层次关系原创 2022-03-04 20:00:41 · 458 阅读 · 0 评论 -
算法思想(持续更新...)
文章目录递归递归递归只是让解决方案更加清晰,并没有性能上的优势。如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易理解。递归有三个基本组成部分,分别是执行的内容(可省略)、基线条件(函数不再调用自己)以及递归条件(函数调用自己)。递归在使用过程中可能占用大量的内存(调用栈),此时有两种解决方案:重新编写代码,转而使用循环;使用尾递归。...原创 2022-02-07 00:21:22 · 231 阅读 · 0 评论 -
搜索算法(持续更新...)
文章目录广度优先搜索实现图实现算法广度优先搜索广度优先搜索是一种针对图的查找算法,其可以回答两类问题:从A节点出发,有前往节点B的路径吗?从A节点出发,前往B节点的哪条路最近?广度优先搜索不仅查找从A到B的路径,而且找到的是最短的路径。实现图图的结构可以用散列表来实现,因为它们是一种映射关系。下图表示的是一种单向关系。map<string, set<string>> initial_map() { map < string, set<string原创 2022-02-06 01:06:36 · 620 阅读 · 0 评论 -
C++ Primer 关联容器
文章目录关联容器和顺序容器的区别引言使用关联容器使用map关联容器和顺序容器的区别关联容器和顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的。与之相对的,顺序容器中的元素是按它们在容器中的位置顺序保存和访问的。虽然关联容器的很多行为与顺序容器相同,但其不同之处反映了关键字的作用。引言两个主要的关联容器:map和set。map中的元素是一些关键字-值对:关键字起到索引的作用,值则表示与索引相关联的数据。set中每个元素只包含一个关键字:set支持高效的关键字查询操作-检查一个给定原创 2022-02-04 16:05:07 · 1726 阅读 · 0 评论 -
C++ Primer 类_2
文章目录访问控制与封装使用class和struct关键字友元友元的声明类的其他特性类成员再探定义一个类型成员Screen的成员函数可变数据成员的初始值类数据成员的初始值返回*this的成员函数(重要且细节)从const成员函数返回*this类类型友元再探类之间的友元关系令成员函数作为友元类的作用域名字查找与类的作用域用于类成员声明的名字查找类型名要特殊处理构造函数再探构造函数的初始值有时必不可少成员初始化顺序委托构造函数访问控制与封装在《C++ Primer 类_1》中,我们完成了数据抽象的步骤,实现了原创 2022-02-01 02:46:27 · 300 阅读 · 0 评论 -
C++ Primer 类_1
文章目录定义抽象数据类型设计Sales_data类书店程序接口定义改进的Sales_data类定义Sales_data类型定义成员函数关于this关于const关于在外部定义的成员函数返回this对象的函数定义类相关的非成员函数read和print函数add函数构造函数合成的默认构造函数某些类不能依赖于合成的默认构造函数定义Sales_data的构造函数构造函数初始值列表在类外部定义构造函数拷贝、赋值和析构类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程(以及设计)技术。类的接口原创 2022-01-31 01:48:57 · 169 阅读 · 0 评论 -
自定义头文件
在头文件中,常常用来做以下三件事情:类的定义;外部变量的声明;函数的声明;头文件都有一个与之配套的源文件,源文件需要引用对应的头文件。自己定义的头文件在引用时为双引号。一般情况下,头文件中只能写声明不能写定义。extern int a;extern int a = 100; // 这是错误的const int a; // 常量的定义也是可以写的我们将《C++ Primer 类》中的图书馆类写成头文件有:// Sales_data.h# ifndef SALES_DATA_H原创 2022-01-31 01:41:24 · 1734 阅读 · 0 评论 -
C++ Primer 随机数
文章目录引入随机数引擎和分布引擎对象分布对象其他随机数分布引入rand是早期用于生成随机数的函数,此函数生成均匀分布的伪随机整数。每个随机数的范围在0和一个系统相关的最大值之间。伪随机指的是由算法生成的随机数,看似随机的表面下可能暗含规律。rand函数存在问题:很多程序需要不同范围的随机数或者随机浮点数或者非均匀分布的随机数。在构造这些要求的同时会引入非随机性。定义在头文件random中的随机数库通过一组协作的类来解决这些问题:随机数引擎类和随机数分布类。引擎类可以生成unsigned随机数序列原创 2022-01-22 22:45:36 · 377 阅读 · 0 评论 -
C++ Primer 顺序容器
文章目录顺序容器概述存储策略的影响容器选择原则容器库概览(适用于所有容器的操作)定义顺序容器概述容器描述vector可变大小数组。支持快速随机访问。在尾部之外的位置插入或删除元素可能很慢deque双端队列。支持快速随机访问。在头尾位置插入、删除速度很快。list双向链表。只支持双向顺序访问。在list中任何位置进行插入/删除操作速度都很快forward_list单向链表。只支持单向顺序访问。在链表任何位置进行插入/删除操作速度都很快array固定大小原创 2022-01-22 19:51:27 · 749 阅读 · 0 评论 -
C++ Primer 函数
文章目录函数基础局部对象自动对象局部静态对象函数基础通过调用运算符来执行函数,调用运算符为()。函数调用完成两项工作:第一、实参初始化函数对应的形参;第二、将控制权转移给被调函数,也就是说,主调函数的执行被暂时中止,被调函数开始执行。函数结束完成两项工作:第一、返回return语句中的值;第二、控制权从被调函数转移回主调函数。局部对象名字有作用域、对象有生命期。作用域是指名字发挥作用的区域,通常而言,一组花括号就是一个作用域。以以下代码为例,两个变量名称相同,但表示的对象不同,他们分别属于不同原创 2021-11-09 01:25:47 · 677 阅读 · 0 评论 -
C++ Primer 字符串、向量和数组
文章目录命名空间的using声明标准库类型string定义和初始化string对象直接初始化和拷贝初始化string对象上的操作读写string对象比较string对象字面值和string对象相加处理字符基于for语句处理每个字符串基于for语句改变每个字符串标准库类型vector定义和初始化vector对象命名空间的using声明作用域操作符::的含义是:编译器从操作符左侧名字所示的作用域中寻找右侧那个名字。//有using声明,就无须专门前缀也能使用所需的名字//格式为:using namesp原创 2021-10-23 14:20:44 · 108 阅读 · 0 评论 -
C++ Primer 变量和基本类型
文章目录基础代码向流写入数据标准库的名字注释变量和基本类型基本类型类型之间类型之内变量作用域复合类型引用(refer to)指针(point to)复合类型的声明const限定符引用和const指针和const顶层const处理类型类型别名基础代码#include <iostream>int main(int argc, const char * argv[]) { std::cout << "Hello, World!"<< std::endl;原创 2021-10-20 17:50:54 · 122 阅读 · 0 评论 -
C++_对象数组和对象指针
文章目录对象数组的定义和使用指向对象的指针类成员指针this指针对象数组的定义和使用注:对象是类的实例。指向对象的指针类成员指针在外部指向对象内的成员。成员函数加上const就无法改变数据成员的值。this指针调用该函数的对象的地址传递到了this。...原创 2021-09-08 16:18:06 · 82 阅读 · 0 评论 -
C++_析构函数
析构函数的定义如果一个指针指向一个对象,调用析构函数时,不会撤销对象,而是撤销指针。何时需要编写析构函数应用场景有两个:自主分配了一个内存空间(new);想要在析构函数执行时做点什么。构造函数和析构函数的调用次序...原创 2021-09-06 09:37:03 · 75 阅读 · 0 评论 -
C++_构造函数
文章目录什么是构造函数构造函数的定义构造函数的重载什么是构造函数结构体、共用体、枚举也类似。构造函数的定义类类型:类里面的类对象,如果自身没有默认构造函数,需要在类中一并说明。(3)初始化式可以是任意的形式(花括号中的表达式)。构造函数的重载...原创 2021-08-22 15:44:33 · 89 阅读 · 0 评论 -
C++_对象的定义和使用
文章目录对象的定义对象成员的引用对象的赋值对象、对象指针或对象引用作为函数的参数和返回值对象的定义对象成员的引用对象的赋值对象、对象指针或对象引用作为函数的参数和返回值函数中定义的类在函数结束后,内容消失,返回类指针的话,变成了迷途指针。...原创 2021-08-22 13:49:09 · 169 阅读 · 0 评论 -
C++_类的定义
文章目录定义类成员的访问控制类的数据成员类的成员函数类的声明定义类在类外定义函数需要加上类名和类运算符,表明这个函数是属于这个类的。成员的访问控制定义类时更一般的形式如上定义。类的数据成员类内为所欲为。类的成员函数成员函数代码不是如图所示的。类的声明...原创 2021-08-21 22:25:21 · 106 阅读 · 0 评论 -
C++_预处理命令
什么是预处理命令参数部分也只是简单的替换。文件包含路径分为默认路径和用户路径。尖括号只到默认路径中找文件;双引号会先到用户路径,再到默认路径。条件编译为了解决文件被重复包含的问题。重复包含会导致预处理时间加长,甚至陷入死循环。此外,会导致出现语法错误。...原创 2021-08-21 15:50:01 · 63 阅读 · 0 评论 -
C++_自定义数据类型
文章目录结构体的定义和使用共用体类型枚举类型自定义数据类型的应用-链表链表的概念和分类链表的运算遍历查找插入结构体的定义和使用只能一个成员一个成员进行赋值。对整个结构体对象可以进行赋值运算。指针法需注意。是一个值传递的过程。共用体类型共享存储空间。以占字节数最多的对象为公用空间。枚举类型自定义数据类型的应用-链表链表的概念和分类new之后的空间要delete。链表的运算遍原创 2021-08-20 14:28:34 · 162 阅读 · 1 评论 -
C++_动态内存分配
文章目录new与delete运算符动态分配数组动态分配字符串new与delete运算符数组在定义时就规定了其长度,这使得它的内存空间也固定了下来,这称为静态内存分配。内存申请大了,会浪费空间;申请小了,又可能会抛弃。以上只能间接引用,没有直接的标识符。注意:new得到的是一个指针。销毁的意义就像是家没了,但是地图上仍然显示你家的地址。在delete后,需要用NULL进行赋值,避免迷途指针的存在。只要它不消亡,我们就能一直使用它,有点像全局变量。动态分配数组多维数组本质原创 2021-08-13 13:07:30 · 449 阅读 · 2 评论 -
C++_指针
文章目录指针的概念指针的有效性指针的运算一维数组与指针指针与字符串指针的概念函数中,只能返回一个值,虽然数组能返回多个值,但是是同一个类型的。那么如何返回多个不同的值呢?指针的出现很好地解决了这一问题。p指向i,指的是p存放i的地址。不同的类型会让系统认为,指向的对象包含x个字节。指针的类型应该和指向的对象的类型一致。指针的有效性随机给了一个地址,里面可能是一个很重要的地址,因此不可以随机改变其中的值。迷途指针产生的原因:指针的运算通过比较指针原创 2021-08-13 12:48:03 · 208 阅读 · 0 评论 -
C++_字符串的处理
文章目录字符数组字符串处理函数字符串对象*字符数组双引号引起的a占两个字符,包含“\0”。字符串处理函数连接的时候,str2中的1替换str1中的‘\0’;比较函数按照string每一个位置处的ascii值进行比较的。计算长度的函数是不包含结束标志的。字符串对象*优点:动态存储,字符串长度不再固定;自动检测字符串是否越界;封装了字符串的多种操作;能用运算符进行操作。对于对象,可以采用方式三。C++对象不能使用gets和puts。c_str返回原创 2021-08-12 00:31:31 · 540 阅读 · 2 评论 -
C++_数组与函数
文章目录数组作为函数的参数数组参数的传递机制数组作为函数的参数传递首地址。A进行修改,a同时也会进行修改。数组参数的传递机制原创 2021-08-11 22:53:58 · 98 阅读 · 0 评论 -
C++_数组的定义和使用
文章目录数组的定义多维数组的定义数组的定义多维数组的定义都是线性排列的。因为每个元素的大小一致,所以是连续排列的。原创 2021-08-10 16:48:32 · 875 阅读 · 0 评论 -
C++_作用域、生命期和程序的组织结构
局部变量和全局变量希望函数完全是独立的,倘若用到全局变量,则在调用函数时需要用到全局变量,削弱了独立性。作用域两个文件在外部的变量的作用域是一样的,因此不可以用相同的名字。可以通过加入static使其私有化而达到可行的目的。生命期比如函数而言,形式参数则是动态存储的。全局变量就是静态存储的。通常的全局变量和局部变量都是自动存储的。有一些变量需要频繁使用,因此需要用到寄存器变量。寄存器的空间是有限的,因此不可以定义太多寄存器变量。...原创 2021-08-10 15:54:49 · 74 阅读 · 0 评论 -
C++_函数
文章目录函数的定义参数部分函数的定义函数声明部分为在函数内部需要用到的一些变量。没有参数的话,可以定义为:函数的类型不能是数组。参数部分定义函数用的参数叫形式参数。写实际参数不要再加数据类型。第四点,将实际参数的类型转化得和形式参数类型一致。...原创 2021-08-09 22:52:40 · 76 阅读 · 0 评论 -
C++_循环结构的设计
原创 2021-08-07 15:50:04 · 72 阅读 · 0 评论 -
C++_循环结构的程序设计
文章目录while语句do while语句for语句break语句continue语句对不同的数据进行相同的操作。while语句do while语句for语句break语句continue语句原创 2021-08-07 15:39:11 · 77 阅读 · 0 评论 -
C++_选择结构的程序设计
文章目录if语句switch语句if语句的嵌套switch语句的嵌套if语句多条简单语句采用复合语句的形式。可以在其后跟一条简单语句。switch语句从一个入口进去后,就不再需要判断了,直接依次执行语句序列。switch后可以接变量表达式,而case后只能接常量表达式。if语句的嵌套switch语句的嵌套...原创 2021-08-06 21:42:34 · 123 阅读 · 1 评论 -
C++_顺序结构的程序设计
文章目录语句输入与输出顺序结构语句输入与输出iomanip介绍顺序结构原创 2021-08-04 12:22:56 · 108 阅读 · 0 评论 -
C++_运算符与表达式
文章目录常用的c++运算符表达式和类型转换表达式数据类型常用的c++运算符后置相当于,先去做别的运算,最后进行自增/减;前置则相反。5>0为真,则值相当于1,而1>2为假,则值变为0。非0就为真,0就为假。左边括号内的逻辑值已经为0,则右边括号内的表达式不被执行。赋值运算符左边不能是常量,也不能是表达式。表达式和类型转换表达式数据类型横向箭头是自动转换的,纵向箭头表示遇到对应数据的转换方向。都是截取,不是四舍五入。...原创 2021-08-04 10:20:05 · 117 阅读 · 0 评论 -
C++_数据在程序中的表示
文章目录数据类型基本数据类型常量数据类型基本类型的特点是不可以再分割为其他类型;构造类型的特点是由基本类型依据一定的规则结合而成。基本数据类型注意点三展示:单精度只保证了七位的有效数字(不包含小数点),其余的数据为随机数。而双精度则达到了十六位有效数字,多余的位数也是随机数。为了保证0.00000678被认为是浮点型,我们在数字后面加上了f。存放占8bit,但表示只用7bit。字符型数据用单引号。常量...原创 2021-08-04 09:48:24 · 92 阅读 · 0 评论 -
C++_信息的表示与存储
文章目录进位计数制及转换转换关系数据在计算机中的存储方式整数浮点数西文字符进位计数制及转换逻辑运算包含真与假,二进制的0和1能很好地表示这两个点。转换关系一、二进制和十进制之间的转换十进制转化为二进制:整数部分:除二取余法小数部分:乘二取整法对加减而言,二进制的计算法则和十进制的是一样的。其他进制转化为十进制:权值表示法。其他进制把2改成8/16即可。总结:掌握了:十进制与二进制之间的直接转换;r进制直接转化为十进制;2进制与8/16进制之间的直接转换;8、原创 2021-07-29 17:59:39 · 159 阅读 · 0 评论 -
C++_概述
文章目录计算机系统的组成基本概念指令程序软件程序设计语言C++语言计算机系统的组成系统软件是系统自带的,不存在的话,计算机无法正常运行。计算机一直属于冯诺依曼计算机,始终包含五大硬件组成。运算器用于进行算术运算与逻辑运算。控制器等同于神经中枢。存储器用于存储数据。又分为内存(当前要使用的数据)和外存。控制器发送指令时,需要先从存储器中将指令取出。基本概念指令操作码指的是要进行怎么样一个操作,操作数通常是地址,表示的是需要进行处理的数据的存储位置。程序软件程序设计语言机原创 2021-07-29 17:14:13 · 145 阅读 · 0 评论