- 博客(41)
- 收藏
- 关注
原创 致敬代码,智创未来:2025程序员节快乐!
10月24日程序员节致敬代码创造者,2025年以"AI构建世界"为主题的技术盛会在长沙举行,展示AI大模型、超级计算等前沿突破。中科曙光推出科学大模型开发平台,甲骨文发布全球最大AI超算。开发者角色正向技术价值创造者转变,需关注AI时代的应用闭环。这个二进制世界的节日,既是对程序员精确与创新精神的礼赞,也传递着代码背后的温度与情感。
2025-10-24 15:40:15
738
原创 C++ 模板进阶
本文主要介绍了C++模板的进阶知识,包括非类型模板参数、模板特化和模板分离编译。非类型模板参数允许使用整型常量作为模板参数,如静态数组的实现。模板特化分为函数模板特化和类模板特化,用于处理特殊类型的特殊情况。函数模板特化步骤繁琐,通常建议直接编写具体函数。类模板特化包括全特化和偏特化,偏特化又分为部分特化和参数限制特化。最后讨论了模板分离编译的难点,主要出现在编译和链接阶段。这些知识对于深入理解和使用C++模板具有重要意义。
2025-10-03 23:50:16
659
原创 C++ priority_queue优先级队列
C++ priority_queue优先级队列(堆)是一种容器适配器,提供堆数据结构功能。文章介绍了其基本用法、成员函数(如push、pop、top等),并区分了大根堆和小根堆的实现方式。通过分析容器适配器和仿函数的概念,深入讲解了priority_queue的底层实现原理。最后展示了基于vector容器和仿函数(Less/Greater)的模拟实现代码,包含向上/向下调整算法,完整呈现了优先级队列的核心机制。
2025-10-03 21:14:07
614
2
原创 C++ stack适配器(配接器)
stack的介绍文档stack就是栈,满足后入先出(LIFO)原则适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口container adapter 两个容器 stack 、queue其实是适配器function adapter 改变仿函数的接口者。
2024-10-25 10:00:00
879
2
原创 C++ queue适配器(配接器)
queue的文档介绍queue就是队列,满足先入先出(FIFO)原则适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另一个接口container adapter 两个容器 stack 、queue其实是适配器function adapter 改变仿函数的接口者。
2024-10-24 10:00:00
718
原创 C++ deque容器
deque的文档介绍deque吸取了vector的随机迭代器,支持++ -- + -操作,访问某个数据的效率可以达到O(1),并且使用方便,大多数接口与vector一致deque称之为双端队列,顾名思义就是支持两端插入删除的特殊队列,所以deque一般也是运用经常头插头删和尾插尾删的场景。
2024-10-23 10:00:00
2078
4
原创 C++ vector容器
vector的文档介绍使用STL的三个境界:能用,明理,能拓展,那么下面学习vector,我们也是按照这三个阶段来进行逐步深入学习。构造函数声明接口说明vecotr();无参构造构造并初始化n个val拷贝构造使用迭代器进行初始化构造// 无参构造// 4个int类型值为100// 拷贝构造。
2024-10-21 10:00:00
1007
1
原创 C++ string类
Linux的g++当容量值n > 字符串长度size;进行缩小,缩小的大小满足扩容的整数对齐当扩容值n < 字符串长度size;进行缩小但不会小于size,依然满足扩容的整数对齐。
2024-08-11 17:05:57
1381
原创 C++ string类的模拟实现
这篇文章,主要就是展示模拟实现C++标准库中的string类的代码,下面就是具体的代码,同时也上传了具体的文件。
2024-08-11 10:30:00
358
原创 C++模版
class 类模板名// 类内成员定义// 一个简单的Stack类模板public:,_size(0){}~Stack()private:T* array;// 模板不建议声明和定义分离到两个文件.h 和.cpp,这样会出现链接错误template // 模板只是一个模具,不是类型,重名不会报错template指明的模板只能支持相邻的下一个语句使用,后面如果需要得重新指明。如上面的声明和定义分离,定义的时候就重新再指明了模板,否则将会报错。
2024-08-09 13:30:00
761
原创 CC++ 内存管理
这是new/delete 和 malloc/free最大区别就是new和delete对于自定义类型除了开空间外,还会调用自己的构造函数和析构函数。int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】// 除了开空间外,还会调用构造函数和析构函数// 动态申请一个A类型的空间并自动调用拷贝构造初始化为10。
2024-08-09 10:30:00
2109
原创 【C++语法糖】范围for
C++11标准后引入了范围for,这个范围for是一种语法糖,来简化代码书写。下面是简单遍历数组的一段简单代码但是如果将数组换成不连续存储的链表list,就不能使用上面的方式,得用迭代器。我们可以看到这段代码还是相对比较麻烦的,C++11以后引入了范围for的语法糖就大大简化了上面的代码。
2024-08-08 13:30:00
2333
原创 C++ auto关键字
C++中有很多很长的类型,那么作为一个优秀的编程语言肯定会想办法便利程序员开发。在C语言中typedef给类型取别名,但是typedef还是有很多不足,比如我只用一次该类型,那么typedef重命名就有点多余了。C++11标准中将auto赋予新的含义,也可以完成这一功能。
2024-08-08 10:00:00
532
原创 类和对象(下)
上篇类和对象(中)已经介绍了六种默认构造函数,这篇主要是对类和对象的补充,如构造函数中的初始化列表、explicit的使用、static使用以及编译器对对象构造时的优化等等。
2024-08-07 17:00:00
769
原创 类和对象(中)
默认成员函数就是用户没有显示实现,编译器会自动生成的成员函数称为默认成员函数。一个类,我们不写的情况下编译器会默认生成一下6个默认成员函数初始化和清理和拷贝赋值比较重要,取地址重载不重要,C++11还增加了两个默认成员变量,移动构造和移动赋值。但是,大多数情况下,编译器是无法自动生成与我们需求完全一致的默认成员函数,这就需要我们自己来进行编写。
2024-08-07 12:49:33
1185
原创 类和对象(上)
class为定义类的关键字,Stack为类的名字(自定义),{}中为类的主体即一个类域,注意类定义结束时后面分号不能省略(与struct一致)。类体重内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。为了区分成员变量,一般习惯上成员变量会加一个特殊标识,如成员变量前面或者后面加"_"或者"m"开头,具体编码风格看公司要求。C++中的struct也可以定义类,是一个公共类,C++兼容C中struct的用法,同时struct升级成了类。
2024-08-06 13:00:00
2238
原创 C++引用
引用不是新定义一个变量,而是给已存在变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。类型& 引用别名 = 引用对象;int a = 10;int& b = a;
2024-08-06 09:00:00
446
原创 C++空指针(nullptr)
nullptr是一种特殊类型的字面量,它可以转换成任意其他类型的指针类型。使用nullptr定义空指针可以避免类型转换的问题,因为nullptr只能被隐式地转换为指针类型,而不能转换为整型类型。通过 f((void*)0) 我们可以知道C++对指针类型转换比较严格,无法将 void* 类型转换成 int*。 在C语言中我们把空指针定义成NULL,但是这在C++中会有所问题,因为C++对指针类型转换比较严格。如此可知,C++中NULL被定义为字面常量0,C中NULL被定义为无类型指针(void*)的常量。
2024-08-05 17:04:27
1092
原创 C++ 域
所以从上可知局部域和全局域除了会影响编译查找逻辑(就近原则),还会影响变量的生命周期(一般以一对 “{ }” 所在的区域为生命周期)。 C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量/函数/类型出处(声明或定义)的逻辑,局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。
2024-08-05 16:58:57
348
原创 sizeof 和 strlen 的对比
本篇文章主要围绕着sizeof和strlen展开叙述,主要目标是了解这两个的用法,注意事项,以及辨析两者间的区别。
2024-04-20 08:00:00
789
原创 深入理解指针(3)
这篇文章主要以各种各样的指针类型以及指针和数组的结合类型进行展开叙述,如(字符指针,数组指针,函数指针,函数指针数组),并且还简单的写了一个了转移表。内容有点长,但是我相信如果能看完的话,能对你有所帮助。
2024-04-18 16:40:58
1278
1
原创 深入理解指针(1)
计算机中处理数据时,得先去通过地址总线去寻找数据,这就得引入地址的概念。地址可以抽象成数据存放的位置。而指针就是用来存放地址。
2024-04-16 09:00:00
1925
原创 C++的命名空间(namespace)
其分为两种情况:1、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称无重复,那么他们会合并为一个命名空间,编译通过2、引入头文件中namespace所自定义空间名字相同时,命名空间中成员名称有重复,那么程序会在链接时报错。因为连接器会检测到重复定义的变量结论:重复定义只针对有内存操作的变量等相关定义,命名空间定义没有内存相关操作,所以不存在重复定义问题。
2024-02-23 09:00:00
901
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅