自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++】智能指针:内存管理的利器

/ 自定义数组删除器std::cout << "自定义删除器:释放数组\n";// 方式 1:显式指定删除器类型// 方式 2:用 lambda(需要推导类型,C++14 及以上)std::cout << "lambda 删除器:释放数组\n";return 0;本次分享就到这里结束了,至此,c++的学习也就告一段落,后续会继续更新linux学习内容。

2025-12-04 10:00:47 974 5

原创 【C++】异常

本文介绍了C++异常处理机制,包括基本语法、匹配规则、栈展开和异常规范。异常处理通过throw、try和catch关键字实现,遵循类型匹配和顺序敏感原则。栈展开是异常处理的核心环节,沿着调用栈回溯直到找到匹配的catch块。C++11引入noexcept关键字声明函数不抛出异常,并可用作运算符检测表达式是否会抛出异常。文章还演示了异常处理的基本用法和注意事项,帮助开发者更好地处理运行时错误。

2025-11-28 23:57:16 376 1

原创 【C++】C++11(下)

一个匿名函数。

2025-11-23 19:57:07 875 23

原创 【C++】C++11(上)

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-11-20 20:47:45 929 6

原创 【C++】基于HashTable的底层实现unordered_map和unordered _set 的封装

本文分析了unordered_map和unordered_set的源码实现,重点探讨了哈希表框架的构建要点。文章详细介绍了迭代器实现中的++操作逻辑,以及insert返回类型从bool改为pair<Iterator,bool>的变更原因。通过封装哈希表,分别实现了unordered_set(单key结构)和unordered_map(key/value结构),其中unordered_map额外实现了"[]"操作符用于提取value。测试代码验证了封装实现的正确性,包括支持自定

2025-10-31 21:46:01 958 11

原创 【C++】哈希表:除留余散法和哈希桶的实现

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-10-25 19:01:06 879 28

原创 【C++】用红黑树封装map与set

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-10-19 11:42:37 1079 12

原创 【C++】红黑树详解

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-10-11 21:43:10 1470 18

原创 【C++】AVL详解

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-09-28 19:16:10 1000 5

原创 【C++】速识map与set

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-09-19 18:44:17 1156 9

原创 【C++】二叉搜索树

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-09-14 15:12:33 970 11

原创 【Linux】Linux常用指令合集

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-09-10 23:52:47 2871 9

原创 【C++】多态

二.多态本文是小编巩固自身而作,如有错误,欢迎指出!之前我们简单介绍了c++面向对象的三大属性,今天我们就来介绍其中之一——多态。

2025-09-06 23:25:05 641 4

原创 【C++】继承

继承是面向对象编程(OOP)中的核心概念之一,指一个类(子类)可以基于另一个类(父类)的属性和方法进行扩展。子类会自动获得父类的成员(字段和方法),同时可以添加新的成员或重写父类的行为。继承的主要目的是实现代码复用和层次化建模。简单来说就是父类的成员你能用且你还可以添加新的成员。

2025-08-15 22:19:11 920 3

原创 【C++】模版进阶

非参数类型模板(通常称为非类型模板参数)是 C++ 模板机制的一个重要特性,它允许在模板定义中使用常量表达式作为模板参数。也就是说模版参数也,可以不是类型而是值。模板特化是C++模板编程中的一个重要特性,它允许针对特定的模板参数类型提供专门的实现版本。当我们使用模板时,模板会根据传入的参数生成相应的代码,但有时候对于某些特定的参数类型,我们希望有不同的处理逻辑,这时就可以使用模板特化。

2025-08-09 21:57:11 487 4

原创 【C++】Stack and Queue and Functor

在 C++ 中,priority_queue(优先队列) 是一种特殊的容器适配器,它基于堆(Heap)数据结构实现,提供常数时间访问最大/最小元素的能力(默认最大堆)。我们看下以下用例int main()pq.push(3);pq.push(5);pq.push(6);pq.push(1);pq.push(9);while (!pq.pop();return 0;我们看出来这是系统默认的情况(最大堆),那么如果我们自己实现要自己模拟实现想要最小堆建怎么办呢?

2025-08-05 20:30:46 960 1

原创 【C++】list及其模拟实现

C++ 中的std::list是标准模板库(STL)提供的一个容器,是一个双向带头循环链表。

2025-07-13 14:58:05 663 4

原创 【C++】vector与其模拟实现

vector是C++中的vector是标准模板库(STL)里常用的序列容器,其实可以简单理解为精简规范过的string容器。

2025-07-05 17:52:18 374 2

原创 【Linux】Lniux基本指令(1)

本文是小编巩固自身而作,如有错误,欢迎指出。

2025-06-25 20:54:54 982 1

原创 【C++】string与其模拟实现

要了解string,首先要知道STL是个啥STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的 组件库,而且是一个包罗数据结构与算法的软件框架。简单来说,就是把之前实现的什么算法,数据结果打包好我们直接用,而STL又可以分为下面的大类而我们今天学习的就是STL容器中的string。

2025-06-21 14:45:56 818 3

原创 【C++】内存管理

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-06-13 19:22:01 981 4

原创 【C++】类和对象(下)

初始化列表其实就是构造函数的一部分,之前我们已经学习了一般的构造函数的写法,而使用初始化列表依然可以实现函数的初始化• 之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅ 式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成 员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。• 每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义 初始化的地⽅。

2025-06-12 12:12:04 759 3

原创 【C++】类和对象(中)

构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并 不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),⽽是对象实例化时初始化 对象。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能,构造函数⾃动调⽤的 特点就完美的替代的了Init。简单来说构造函数就是类似于初始化函数,我们看看以下代码就可以理解上述函数中的与类同名的函数就是构造函数,其作用就是初始化构造函数还可以传参或者缺省。

2025-06-08 14:52:53 1007 4

原创 【C++】 类和对象(上)

• class为定义类的关键字,后跟一个类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。

2025-05-31 14:34:18 946 3

原创 【C++】C++入门基础

• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2025-05-30 12:40:51 726 2

原创 【数据结构】排序

本文是小编巩固自身而作,如有错误,欢迎指出!就类似于我们平时打扑克时一样,在理牌时将新拿的牌直接插入进行排序 直接插入排序的思想就是代码实现如下 这里代码的思想就是希尔排序法⼜称缩⼩增量法。希尔排序法的基本思想是:先选定⼀个整数(通常是gap=n/3+1),把 待排序⽂件所有记录分成各组,所有的距离相等的记录分在同⼀组内,并对每⼀组内的记录进⾏排 序,然后gap=gap/3+1得到下⼀个整数,再将数组分成各组,进行插⼊排序,当gap=1时,就相当于直接插⼊排序。希尔排序是在直接插入排序的情况下进行改善

2025-05-26 23:50:47 1210 1

原创 【数据结构】链式二叉树

本文是小编巩固自身而作,如有错误,欢迎指出!之前已经简介过儿二叉树的基本概念和基于数组的堆的实现,如有兴趣可以访问。

2025-05-22 12:17:35 1225 2

原创 【数据结构】堆

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-05-18 13:14:43 998 3

原创 【数据结构】栈与队列

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-05-15 17:32:12 914 2

原创 【数据结构】双向链表

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-05-13 09:54:05 714 3

原创 【数据结构】单链表的增删查改

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-05-02 17:51:42 1076 3

原创 【数据结构】顺序表

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-04-27 19:37:40 949 3

原创 【数据结构】算法复杂度

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-04-25 20:16:05 1149 2

原创 编译与链接

经过预处理后的 .i ⽂件中不再包含宏定义,因为宏已经被展开。并且包含的头⽂件都被插⼊到 .i ⽂件中。所以当我们⽆法知道宏定义或者头⽂件是否包含正确的时候,可以查看预处理后的 .i ⽂件进行确认。

2025-04-23 09:57:09 956 1

原创 文件操作函数

磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。fgetc函数从给定的文件流stream中读取一个字符,并将文件位置指示器向前移动一个字节(如果文件流支持定位操作)。fputc是 C 语言标准库中的一个函数,用于将一个字符写入到指定的文件流中。函数原型下面是示例perror("无法打开文件");return 1;// 将文件指针移动到文件开头char ans;// 使用 %c 格式化字符输出return 0;

2025-04-22 23:00:07 1272 3

原创 动态内存管理

本文是小编巩固自身而作,如有错误,欢迎支持指出!

2025-04-20 13:50:25 1268 3

原创 结构体详解

位段(bit field)是C语言和C++语言中的一种特殊数据结构,它允许在一个字节或多个字节内精确地分配和使用位。这在节省内存空间和直接操作硬件寄存器等场景中非常有用。位段的声明和结构是类似的,有两个不同:1. 位段的成员必须是 int、unsigned int 或signed int ,在C99中位段成员的类型也可以 选择其他类型。2. 位段的成员名后边有⼀个冒号和⼀个数字。int _b:5;int _c:10;int _d:30;

2025-04-19 11:48:38 888 4

原创 数据在内存中的储存

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分 为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:⼤端(存储)模式: 是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处。⼩端(存储)模式: 是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处。用人话讲就是读的顺序一样就是大端,相反就是小端。

2025-04-14 18:59:05 1130 2

原创 库函数的模拟实现(2)

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-04-12 22:19:31 351 4

原创 库函数的模拟实现(1)

本文是小编巩固自身而作,如有错误,欢迎指出!

2025-04-11 16:19:19 651 6

空空如也

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

TA关注的人

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