![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 66
誰能久伴不乏
这个作者很懒,什么都没留下…
展开
-
红黑树的原理
定义 — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:1)节点是红色或黑色;2)根节点是黑色;3)所有叶子节点都是黑色节点(NULL);4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。5)从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。原创 2023-09-17 22:02:38 · 345 阅读 · 0 评论 -
哈夫曼编码原理及实现
构建编码树的方法是将频率最低的两个符号合并为一个新节点,该节点的频率为两个节点频率之和。哈夫曼编码(Huffman Coding)是一种用于数据压缩的编码方法,它通过给出不同的数据符号分配不同长度的编码,使得出现频率高的符号具有较短的编码,而出现频率低的符号具有较长的编码,从而达到压缩数据的目的。然而,对于哈夫曼编码的最佳性能,符号的频率应该是根据数据集的统计特征进行调整的。由于频率高的符号具有较短的编码,而频率低的符号具有较长的编码,所以整个编码后的数据长度会相对减小。原创 2023-09-17 21:52:20 · 2589 阅读 · 0 评论 -
二叉树的具体原理及实现
如果要插入的键值小于当前节点的键值,并且当前节点没有左子节点,则将新节点作为当前节点的左子节点;如果要插入的键值大于当前节点的键值,并且当前节点没有右子节点,则将新节点作为当前节点的右子节点。首先,找到要删除的节点。如果要删除的节点有两个子节点,可以找到其右子树中的最小节点(或者左子树中的最大节点)来替换它。将要删除的节点的值,与节点 root 节点进行比较,若小于则去到左子树进行比较,若大于则去到右子树进行比较,重复以。4.删除节点存在左右子节点,则取左子树上的最大节点或右子树上的最小节点替换删除节点。原创 2023-09-17 21:39:20 · 731 阅读 · 0 评论 -
函数指针与指针函数
函数指针与指针函数详解原创 2023-07-04 17:53:40 · 209 阅读 · 0 评论 -
C++,STL,set,multiset容器
set和multiset是一个集合容器,其中set所包含的元素是唯一的,集合中的元素按一定的顺序排列。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。在n个数中查找目标数的效率是 log2 n红黑树定义 — 是每个节点都带有颜色属性(颜色为红色或黑色)的自平衡二叉查找树,满足下列性质:1)节点是红色或黑色;2)根节点是黑色;3)所有叶子节点都是黑色节点(NULL);4)每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续原创 2022-12-05 21:45:02 · 150 阅读 · 0 评论 -
string解析
#string解析string是C++的一种字符串,在C语言中,没得string在string中,存储的每一个字符,都是char类型的,并且string支持下标访问而且string自带下标,不需要分配数组##string基本用法使用string的时候,切记,切记,string不能读取空格,string必须读取连续的数据,遇到空格,或者换行符,就会结束读取,导致数据不完整。#includ...原创 2020-03-02 17:56:22 · 903 阅读 · 0 评论 -
C++基础练习题
第二题打印任意行数用*组成的三角第三题打印任意行数的倒三角第四题打印打印任意行数的金字塔第五题 打印任意行数的倒金字塔第六题 打印乘法口诀表第七题 打印出所有水仙花数水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)。第八题 打印任意个斐波那契数斐波那契数,亦称之为斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列和兔子数列,指的是这原创 2020-03-07 18:00:55 · 2026 阅读 · 1 评论 -
C/C++最细循环解析
while循环解析当需要反复执行某些“过程”时,就可以使用 while 循环。语法:while (条件) {语句 1语句 2… }强烈建议,无论循环体内有几条语句,都使用{}while适用于死循环死循环有些场合(比如,游戏引擎的主循环, 就是一个死循环)更多场合,需要避免死循环。break 的作用跳出所在的循环代码:需求:1+2+3+4+…100#include &...原创 2020-03-08 14:57:24 · 399 阅读 · 0 评论 -
C++指针笔记
1.函数的值传递,无法通过调用函数,来修改函数的实参.2.被调用函数需要提供更多的“返回值”给调用函数3.减少值传递时带来的额外开销,提高代码执行效率指针的定义注意:32 位系统中,int 整数占 4 个字节,指针同样占 4 个字节64 位系统中,int 整数占 4 个字节,指针同样占 8 个字节什么是空指针?坏指针int *select; //没有初始化情形一printf(“选择的房间是: %d\n”, *select);情形二select = 100;printf(“选原创 2020-03-17 21:06:21 · 997 阅读 · 1 评论 -
C++笔记-动态内存
1.按需分配,根据需要分配内存,不浪费内存拷贝函数void *memcpy(void *dest, const void *src, size_t n);#include功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中void *malloc(size_t size);void free(void *);malloc 在内存的动态存储区中分配一块长度为size字节的连续区域返回该区域的首地址.突破栈区的限制,可以给程序分配更多的原创 2020-03-21 21:08:28 · 360 阅读 · 1 评论 -
C++ 笔记-结构体-枚举-类型定义
为什么要使用“结构”(结构体)但需要表示一些复杂信息时,使用单纯的数据类型很不方便。比如:学生信息(学号,姓名,班级,电话,年龄)什么是“结构”结构,就是程序员自定义的一种“数据类型”是使用多个基本数据类型、或者其他结构,组合而成的一种新的“数据类型”。结构的定义struct 结构名 {成员类型 成员名;成员类型 成员名;};比如:struct student {...原创 2020-03-25 17:59:10 · 2391 阅读 · 1 评论 -
C++面向对象-类的基本使用方法
什么是面向过程?根据程序的执行过程,来设计软件的所有细节。面向过程的缺点:开发大型项目时,越来越难以把控,甚至失去控制。后期维护、更新成本很大。解决方案:使用面向对象。面向过程是C语言的东西,C++是面向对象什么是面向对象?面向对象是一种开发思想,一种全新的开发方式。面向对象思想的重要性:开发大型项目必备,是高级程序员的必备技能!“人类”是一个抽象的概念,不是具体的某个人。“类”,是看不见,摸不着的,是一个纯粹的概念.“类”,是一种特殊的“数据类型”,不是一个具体的数据。注意:类, 和基本原创 2020-04-04 12:45:02 · 2459 阅读 · 0 评论 -
C++面向对象派生继承-笔记
代码:Father.hSon.hFather.cppSon.cppmain.cpp子类, 一般会添加自己的数据成员/成员函数,或者, 重新定义从父类继承的方法!!! 子类对象就会调用自己重新定义的方法, 不会调用父类的同名方法为什么要使用protected访问权限?子类的成员函数中,不能直接访问父类的private成员,已经这些成员已经被继承下来了,但是却不能访问。只有通过父类的public函数来间接访问,不是很方便。比如,刚才Demo中Father类中的name和age成员。解决方原创 2020-04-19 18:59:13 · 347 阅读 · 0 评论 -
C++,STL,List容器
/反转链表,比如list包含1, 2, 3, 4, 5五个元素,运行此方法后,list就包含5, 4, 3, 2, 1元素。//在pos位置插入[beg,end)区间的数据,无返回值。//在pos位置插入一个elem元素的拷贝,返回新数据的位置。//将[beg, end)区间中的数据拷贝赋值给本身。//删除[beg,end)区间的数据,返回下一个数据的位置。//将[beg, end)区间中的元素拷贝给本身。//删除pos位置的数据,返回下一个数据的位置。原创 2022-11-22 22:08:57 · 117 阅读 · 0 评论 -
C++,STL,deque容器
deque是“double-ended queue”的缩写,和vector一样都是STL的容器,唯一不同的 是: deque是双端数组,而vector是单端的。//将[beg, end)区间中的数据拷贝赋值给本身。//在pos位置插入一个elem元素的拷贝,返回新数据 的位置。//在pos位置插入[beg,end)区间的数据,无返回值。//构造函数将[beg, end)区间中的元素拷贝给本身。//删除[beg,end)区间的数据,返回下一个数据的位置。//存放float的deque容器。原创 2022-11-19 11:13:14 · 100 阅读 · 0 评论 -
C++,STL,vector容器
vector相当于顺序表vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素,支持索引值直接存取, 用[]操作符或at()方法对元素进行操作vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时,这是因为在中部或者头部插入数据,所以数据都会移动,会大量拷贝。原创 2022-11-18 09:46:22 · 722 阅读 · 0 评论 -
顺序栈的各种操作
注意:顺序栈只能在一端操作,后进先出,这是栈的关键特征,也就是说不允许在中间查找,取值,插入,删除,等,操作,掌握好顺序栈的,初始化,入栈,出栈,去栈顶元素等操作即可。2.进出的一端为栈顶(top),另一端为栈底(base),栈可以用顺序存储,也可以用链式存储。1.栈是一种线性表,只不过它是操作,受限的线性表,只能在一端操作。其中,base指向栈地,top指向栈顶。原创 2022-10-04 19:28:35 · 295 阅读 · 0 评论 -
优先级队列
代码】C++优先级队列。原创 2022-08-18 09:17:38 · 197 阅读 · 0 评论 -
C循环队列
代码】C++循环队列。原创 2022-08-18 09:13:36 · 542 阅读 · 0 评论 -
链表实现队列
代码】链表实现顺序表。原创 2022-08-09 23:36:25 · 290 阅读 · 0 评论 -
顺序表实现队列
其中有两种出队列的方式,原理如下。原创 2022-08-09 23:33:43 · 90 阅读 · 0 评论 -
Linux 内核“共享”双向链表(高逼格代码)
/一. web 服务器超时的链表结构 typedef struct {int fd;// 使用超时时刻的时间戳表示 } ConnTimeout;} //二.璀璨星空的链表结构 typedef struct {int x;//星星的 x 坐标 int y;//星星的 y 坐标 enum STATUS stat;//状态 unsigned radius;//星星的半径 int step;//每次跳跃的间隔 int color;//星星的颜色 } STAR;}...原创 2022-08-08 18:42:30 · 176 阅读 · 0 评论 -
C++单链表,增,改,删,查
单链表的增,改,删,查原创 2022-07-26 23:14:28 · 571 阅读 · 0 评论 -
让程序在一秒或者多秒中做一件事情
代码】让程序在一秒或者多秒中做一件事情。原创 2022-07-21 20:29:39 · 125 阅读 · 0 评论 -
C顺序表实现
代码】顺序表实现。原创 2022-07-21 11:13:06 · 116 阅读 · 0 评论 -
C++类型转换
旧式转型 C风格的强制类型:TYPE b = (TYPE) a例如:int i = 48;char c = (char) i;新式转型C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。格式:TYPE b = 类型操作符 ( a )类型操作符= static_cast | reinterpreter_cast | dynamic_cast | const_cast静态类型转换(斯文的劝导,温柔的转换)。如int转换成char主要用法:1.用于类层次结构中基类(父类)和派生类原创 2022-07-13 22:57:41 · 310 阅读 · 0 评论 -
函数模板_类模板
项目需求: 实现多个函数用来返回两个数的最大值,要求能支持char类型、int类型、double类型变量实际上,以上程序,只需要一个“函数”就可以搞定!函数模板语法所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。由以下三部分组成: 模板说明 + 函数定义 +原创 2022-06-24 20:00:58 · 801 阅读 · 0 评论 -
C++运算符重载
ps:代码可以直接运行boy.hman.hboy.cppman.cppmain.cpp原创 2022-06-22 13:37:23 · 269 阅读 · 0 评论 -
C++核心_编程_多态
1.为了避免程序的二义性2.当统一使用父类指针处理的时候,父类指针指向子类的时候,去调用子类里面的方法,实际上调用的是父类的方法运行结果这里就是使用父类指针做统一处理,使用了父类指针指向了子类对象,但是调用的实际上还是父类的函数在父类的成员函数前面加上virtual,使用虚函数来处理,子类可加可不加多态的本质:形式上,使用统一的父类指针做一般性处理,但是实际执行时,这个指针可能指向子类对象,形式上,原本调用父类的方法,但是实际上会调用子类的同名方法。【注意】程序执行时,父类指针指向父类对象,或原创 2022-06-09 15:00:40 · 93 阅读 · 0 评论 -
c++笔记
#getline的用法#include <iostream>#include <windows.h>#include <string>using namespace std;int main (void){ string x; cout<<"请输入字符串:"; getline(cin,x);//getline==读取一行,遇到换行符...原创 2020-03-03 18:51:29 · 1792 阅读 · 2 评论 -
C++错误总结
string x;//品种 float y;//重量 float j;//长度 };"草鱼" };return 0;}这是报错的源代码,编译器没有任何报错,但是一编译就出问题,我看了半天才发现原来是struct中的string 前面没有加std::以为我在mani函数前加了using namespace std;但是我定义struct的时候定义在了using namespace std;前面,所以导致了“未知重写说明符”...原创 2022-04-18 20:44:34 · 4658 阅读 · 0 评论 -
C/C++ cout,printf输出控制精度
C++控制精度输出的方法:1.首先需要添加一个#include <iomanip>头文件2.cout << setiosflags(ios::fixed) << setprecision(2) << y;3setprecision(2),这个2代表的是保留小数点的位数C控制精度的方法1.printf("%.2f", y);这里面的%.2f代表的是保留两位小数....原创 2022-03-03 19:43:53 · 993 阅读 · 0 评论 -
C++自定义函数返回值
#include <iostream>#include <string>#include <Windows.h>using namespace std;double light_year(double w ) { w = w * 63240; return w;}int main(void) { double g=0; double t=0; cout << "请输入光年:"; cin >> g; light_year原创 2020-10-31 17:05:11 · 1031 阅读 · 1 评论 -
switch基本用法
switch用法原创 2020-07-04 18:00:58 · 664 阅读 · 0 评论 -
C++ I/O文件读写操作
IO: 向设备输入数据和输出数据C++的IO流c++中,必须通过特定的已经定义好的类, 来处理IO(输入输出)文件流: 对文件进行读写操作头文件: 类库:ifstream 对文件输入(读文件)ofstream 对文件输出(写文件)fstream 对文件输入或输出//写文件#include <fstream>#include <iostream>#include <string>using namespace std;原创 2020-05-22 08:58:50 · 3851 阅读 · 11 评论