
C++
文章平均质量分 93
C++学习记录
ZH-Won
Practice Makes Perfect.
展开
-
【C++】模板进阶---cpp模板的深入探索
模板参数分类类型形参与非类型形参。类型形参,即出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。原创 2024-09-26 13:48:42 · 1028 阅读 · 43 评论 -
【C++】深度解析:用 C++ 模拟实现 priority_queue类,探索其底层实现细节(仿函数、容器适配器)
优先级队列默认使用vector作为其底层存储数据的容器,在vector上又使用了堆算法将vector中元素构造成 堆 的结构,因此priority_queue就是堆,所有需要用到堆的位置,都可以考虑使用priority_queue。原创 2024-08-22 14:20:18 · 989 阅读 · 43 评论 -
【C++】深入探索:从零开始模拟实现C++中的Vector容器
在C++中,vector是一个非常常用的容器,它提供了一种动态数组的实现方式,允许我们在运行时动态地增加或减少元素的数量。vector的内部实现主要依赖于动态分配的内存和连续存储的元素。原创 2024-07-29 18:49:10 · 1324 阅读 · 54 评论 -
【C++】深入探索vector,让你一次性学懂!
vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。原创 2024-07-20 23:31:53 · 1133 阅读 · 50 评论 -
【C++】深度解析:用 C++ 模拟实现 string 类,探索其底层实现细节
1. 字符串是表示字符序列的类2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型(关于模板的更多信息,请参阅basic_string)。4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的原创 2024-05-14 10:37:34 · 1245 阅读 · 48 评论 -
初识STL(标准模板库)
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架。原创 2024-03-19 20:39:25 · 1354 阅读 · 37 评论 -
【C++】初识模板
函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。原创 2024-03-10 16:46:05 · 931 阅读 · 25 评论 -
C/C++内存管理及内存泄漏详解
栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。原创 2024-03-02 17:28:41 · 1221 阅读 · 2 评论 -
【C++】类和对象---友元,内部类,匿名对象详解
友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。原创 2024-02-23 19:57:43 · 925 阅读 · 8 评论 -
C语言翻译环境:预编译+编译+汇编+链接详解
在ANSI C的任何⼀种实现中,存在两个不同的环境。第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。第2种是运行环境,它用于实际执行代码。原创 2024-02-22 18:46:46 · 1571 阅读 · 22 评论 -
【C++】类和对象---const成员,取地址及const取地址操作符重载,static成员
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。原创 2024-02-21 22:09:00 · 1095 阅读 · 10 评论 -
【C++】拷贝构造函数和赋值运算符重载详解
拷贝构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象创建新对象时由编译器自动调用。原创 2024-02-03 21:35:09 · 1920 阅读 · 27 评论 -
【C++】引用详解
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。原创 2024-02-02 22:43:08 · 1220 阅读 · 22 评论 -
【C++】构造函数和析构函数详解
默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。原创 2024-01-31 20:54:08 · 1390 阅读 · 26 评论 -
【C++】输入&输出、缺省参数、函数重载
为函数的参数指定一个缺省值(默认值)。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。原创 2024-01-28 16:16:01 · 1677 阅读 · 42 评论 -
【C++】命名空间详解
在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决int main()return 0;// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”C++ 要求所有标识符都是无歧义的。原创 2024-01-24 16:38:21 · 1034 阅读 · 38 评论 -
C++发展史
C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。原创 2024-01-18 13:13:24 · 1556 阅读 · 35 评论 -
STL——stack容器和queue容器详解
栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除操作。在进行数据插入和删除的一端称为栈顶,另一端称为栈低。栈中的元素都遵循后进先出的原则(LIFO,Last In First Out)。栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。栈的删除操作叫做出栈。//判断堆栈是否为空。原创 2024-01-09 00:16:56 · 1609 阅读 · 28 评论 -
STL——deque详解
双端数组,可以对头端进行插入删除操作原创 2024-01-07 14:14:26 · 1486 阅读 · 12 评论 -
STL——vector详解
/向容器中添加数据。原创 2024-01-04 12:08:27 · 2814 阅读 · 22 评论 -
STL——string详解
string是C++风格的字符串,而string本质上是一个类char*是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器string类内部封装了很多成员方法例如: 查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责。原创 2024-01-03 20:31:11 · 1022 阅读 · 14 评论 -
初识STL
STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)原创 2024-01-03 20:11:30 · 1072 阅读 · 16 评论