- 博客(16)
- 收藏
- 关注
原创 二叉搜索树(递归和非递归模拟实现)
二叉搜索树还支持多种遍历方式,包括前序遍历、中序遍历和后序遍历。其中,中序遍历(左-根-右)会按照升序访问所有节点,这是二叉搜索树的一个重要特性。问题:如果退化成单支树,二叉搜索树的性能就失去了。那能否进行改进,不论按照什么次序插。入关键码,二叉搜索树的性能都能达到最优?那么AVL树和红黑树就是为了解决这类问题。插入和删除操作都必须先查找,查找效率代表了二叉搜索树中各个操作的性能。二叉搜索树的主要操作包括搜索、插入和删除。
2024-05-06 17:08:29
411
原创 c++智能指针
借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:•不需要显式地释放资源。•采用这种方式,对象所需的资源在其生命期内始终保持有效。
2024-04-30 17:19:04
1508
原创 进程间的通信(二)共享内存
共享内存(Shared Memory)是指两个或多个进程共享一个给定的存储区。换句话说,共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。大致原理如下图。
2024-04-29 17:56:26
547
原创 进程间的通信(一)管道
在Linux中,匿名管道(pipe)是一种用于进程间通信的机制,特别适用于具有亲缘关系的进程(如父子进程)之间的通信。匿名管道实际上是由内核管理的一块缓冲区,通过让不同的进程都能访问同一块缓冲区来实现进程间通信。在Linux中,命名管道(named pipe)也被称为FIFO(First In First Out,先进先出)文件,它允许没有亲缘关系的进程之间进行通信。与匿名管道不同,命名管道在文件系统中有一个对应的文件名,因此任何进程都可以通过文件名来访问它。
2024-04-28 18:31:50
565
1
原创 c/c++动态内存管理经典题型(精简版)
什么是内存泄漏内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害长期运行的程序出现内存泄漏,影响很大,如操作系统、后台服务等等,出现内存泄漏会导致响应越来越慢,最终卡死。
2024-04-27 20:33:32
351
原创 c++11中的std::initializer_list模板类
public:it!在这个例子中,我们定义了一个 MyClass 类,它有一个接受 std::initializer_list 参数的构造函数。在 main 函数中,我们使用花括号初始化语法来创建一个 MyClass 对象,并传递一个整数列表给构造函数。
2024-04-26 20:32:12
448
1
原创 c++继承中的经典题型
菱形继承是指有一个基类被两个不同的类所继承,且存在一个类继承于这两个类而形成的一种菱形关系。如下图所示菱形虚拟继承通过在多个类同时继承一个类时加上virtual关键字,使得继承父类的变量在全局只有一份。这样,多个类可以同时找到并修改这个唯一的父类变量。如下图。
2024-04-25 19:37:10
431
1
原创 c++之内联函数(基础版)
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率假如在一个程序中一个函数要反复调用,那么每次调用都会占用函数栈帧,然后使用完后还给操作系统,假如调用该函数的次数非常大,那么会大大增加程序运行的时间对于该问题C语言采用宏#define在编译时进行替换减少函数栈帧而c++中便是采用inline修饰函数解决此问题查找方式在release模式下,普通函数在调试下转为反汇编一般都有call指令去找函数地址就如上图中的
2023-05-02 16:32:18
255
原创 c++入门之引用&
int & a;return 0;//a本身不能修改,而这里的ra相当于可以修改,将a的权限放大,故发生错误 const int & ra = a;//而这里可以,相对于权限平移 // int& b = 10;//由于常数具有常性,故此处权限放大 const int & b = 10;//这里发生了类型的隐式转换,且是通过临时变量进行,而临时变量具有常性,故此处权限放大 const int & rd = d;
2023-04-26 23:45:16
125
4
原创 c++入门之缺省参数(基础版)
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。3. 缺省值必须是常量或者全局变量。4. C语言不支持(编译器不支持)
2023-04-22 23:34:48
183
原创 c++入门(命名空间和域访问运算符)
用代码展示如下int a = 1;int a = 2;int a = 3;//表示搜索局部域 printf("%d\n" , :: a);//::前面为空代表搜索全局域 printf("%d\n" , JS :: a);//表示搜索命名空间域 return 0;效果如上。
2023-04-21 18:17:16
247
1
原创 通讯录静态版(包含通讯录的增加,删除,查找,修改,排序,显示)
提示:以下是本篇文章正文内容,下面案例可供参考代码如下# include # include # include # define Max 100 # define Name_Max 20 # define Sex_Max 10 # define Addr_Max 20 # define Tele_Max 20 //人的信息 typedef struct PeoInfo {//存放姓名 int age;
2023-02-18 16:00:27
202
7
原创 扫雷超详解(可展开一片空白)
我们都知道扫雷分给不同等级一下操作均以最基础的9*9棋盘,10个雷的难度演示//游戏菜单:选择是否开始玩儿游戏,1:玩儿,0:退出游戏;}虽然我们要打印99的棋盘,但为了后续能更好的统计最外围雷的个数我们需要在最外围各自在加上一行,相当于以左右上下各加一行,相当于1111的棋盘后续在其9*9的棋盘上进行操作即可所以在头文件game.h中,定义后续操作需要用的ROW,COL,ROWS,COLS99+2+2然后在text.c文件中我们创出两个11*11的二维数组0 };0 };
2022-11-22 20:35:08
4920
12
原创 三子棋(N子棋)小游戏超详解
三子棋写成的效果如下写成N子棋 效果如下(其中拿五子棋做示范)提示:以下是本篇文章正文内容,下面案例可供参考//游戏菜单:选择是否开始玩儿游戏,1:玩儿,0:退出游戏;}我们规定:判断输赢的代码要告诉我:电脑赢了?玩家赢了?玩家赢?游戏继续?//电脑赢:#//玩家赢:*//平局:Q//游戏继续:C思路同样如上我们先在text.c文件中game函数调用is_win(board, ROW, COL);来判断胜负,并传入行和列,其中is-win函数返回值用ret接收。
2022-11-17 14:39:15
3228
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人