
c++
文章平均质量分 95
c++学习
孤寂大仙v
悟已往之不谏,知来者之可追
展开
-
侯捷 C++ 课程学习笔记:STL 标准库与泛型编程的实战指南
通过学习侯捷老师的《STL 标准库与泛型编程》课程,我对 STL 的强大功能和灵活性有了全新的认识,并将其应用到了实际项目中。侯捷老师清晰的讲解和丰富的实战案例让我受益匪浅。在学习过程中,我深刻体会到了 STL 的高效性、泛型编程的优势以及代码的可读性和可维护性。在未来的学习中,我将继续深入学习侯捷老师的其他课程,如《C++ 内存管理机制》和《C++ 新标准 11/14》,进一步提升自己的 C++ 编程能力。我相信,在侯捷老师的指导下,我能够在 C++ 的世界中不断进步,成为一名优秀的开发者。原创 2025-02-19 19:08:06 · 900 阅读 · 21 评论 -
C++ 游戏开发:从零到英雄的进阶之旅
C++ 游戏开发是一个充满挑战与机遇的领域。通过扎实学习基础知识、熟练掌握核心技术并积极进行实战练习,你可以在游戏开发的道路上不断迈进。无论你是初出茅庐的新手还是经验丰富的开发者,C++ 都将是你实现游戏梦想的强大工具。希望这篇博客能够为你提供一些有价值的建议和启发,祝你在游戏开发的旅程中收获成功!倘若你在实践过程中有任何疑问或者心得,欢迎随时交流分享。原创 2025-02-19 09:32:16 · 6593 阅读 · 68 评论 -
侯捷 C++ 课程学习笔记:C++ 面向对象开发的艺术
一、课程核心内容:C++ 面向对象开发的关键特性![侯捷老师的课程详细讲解了 C++ 面向对象编程的三大核心特性:封装、继承和多态。这些特性不仅提升了代码的可维护性和可扩展性,还为复杂系统的开发提供了强大的支持。## (一)封装:隐藏实现细节,提供接口封装是面向对象编程中最基本的特性之一。侯捷老师通过一个实际案例展示了如何使用类来封装数据和行为。以下是一个简单的 BankAccount 类,它封装了银行账户的余额和相关操作原创 2025-02-15 23:37:10 · 622 阅读 · 8 评论 -
侯捷 C++ 课程学习笔记:C++ 新标准 11/14 的革新与实战应用
通过学习侯捷老师的《C++ 新标准 11/14》课程,我对现代 C++ 编程有了全新的认识,并将其应用到了实际项目中。侯捷老师清晰的讲解和丰富的实战案例让我受益匪浅。在学习过程中,我深刻体会到了新特性带来的便利和性能优化,也理解了现代 C++ 编程的理念。在未来的学习中,我将继续深入学习侯捷老师的其他课程,如《STL 标准库与泛型编程》和《C++ 面向对象开发》,进一步提升自己的 C++ 编程能力。我相信,在侯捷老师的指导下,我能够在 C++ 的世界中不断进步,成为一名优秀的开发者。原创 2025-02-13 09:04:55 · 1157 阅读 · 14 评论 -
侯捷 C++ 课程学习笔记:C++ 内存管理机制的深度剖析与实践
通过学习侯捷老师的《C++ 内存管理机制》课程,我对 C++ 内存管理有了更深入的理解,并将其应用到了实际项目中。侯捷老师清晰的讲解和丰富的实战案例让我受益匪浅。在学习过程中,我深刻体会到内存管理的重要性,以及智能指针和内存池在实际开发中的优势。在未来的学习中,我将继续深入学习侯捷老师的其他课程,如《STL 标准库与泛型编程》和《C++ 新标准 11/14》,进一步提升自己的 C++ 编程能力。我相信,在侯捷老师的指导下,我能够在 C++ 的世界中不断进步,成为一名优秀的开发者。原创 2025-02-10 14:28:04 · 805 阅读 · 12 评论 -
侯捷 C++ 课程学习笔记:从 STL 到实战的蜕变之旅
通过学习侯捷老师的《STL 标准库与泛型编程》课程,我对 STL 有了更深入的理解,并将其应用到了实际项目中。侯老师清晰的讲解和丰富的实战案例让我受益匪浅。在学习过程中,我深刻体会到理论与实践相结合的重要性,同时也养成了良好的编程习惯。在未来的学习中,我将继续深入学习侯捷老师的其他课程,如《C++ 新标准 11/14》和《C++ 面向对象开发》,进一步提升自己的 C++ 编程能力。我相信,在侯捷老师的指导下,我能够在 C++ 的世界中不断进步,成为一名优秀的开发者。原创 2025-02-10 11:23:59 · 549 阅读 · 5 评论 -
【C++】智能指针详解
智能指针是C++标准库中的一个重要概念,主要用于管理动态分配内存的对象。与传统指针不同,智能指针能够自动管理内存的分配和释放,从而减少内存泄漏和其他内存相关错误的风险。和。原创 2024-12-21 09:25:00 · 3837 阅读 · 81 评论 -
【C++】异常
异常处理是一种处理错误的机制,它允许在程序运行中遇到问题时,不直接中断程序的正常流程,而是跳转到特定的处理代码中进行处理。C++ 使用 throw 语句抛出异常对象,并使用 try-catch 语句捕获和处理异常。抛出异常:使用 throw 关键字抛出一个异常对象。抛出的对象通常是某个类型的实例(可以是内建类型,也可以是自定义类)。捕获异常:使用 try-catch 语句来捕获并处理异常。在 try 块中放置可能抛出异常的代码,catch 块则处理异常。原创 2024-12-06 08:44:11 · 1890 阅读 · 60 评论 -
C++11新特性详解(关于C++11你想了解的里面全都有)
模拟实现list的emplace和emplace_back接口,这里把参数包不段往下传递,最终在结点的构造中直接去匹配容器存储的数据类型T的构造,所以达到了前面说的empalce支持直接插入构造T对象的参数,这样有些场景会更高效⼀些,可以直接在容器空间上构造T对象。原创 2024-12-01 15:01:18 · 1096 阅读 · 64 评论 -
【C++】哈希表实现和unordered_map和unordered_set
unordered_set的声明如下,Key就是unordered_set底层关键字的类型unordered_set默认要求Key⽀持转换为整形,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key转成整形的仿函数传给第⼆个模板参数unordered_set默认要求Key⽀持⽐较相等,如果不⽀持或者想按⾃⼰的需求⾛可以⾃⾏实现⽀持将Key⽐较相等的仿函数传给第三个模板参数unordered_set底层存储数据的内存是从空间配置器申请的,如果需要可以⾃⼰实现内存池,传给第四个参数。原创 2024-11-07 08:00:00 · 1181 阅读 · 100 评论 -
【C++】红黑树
红⿊树是⼀棵⼆叉搜索树,他的每个结点增加⼀个存储位来表⽰结点的颜色,可以是红色或者黑色。通过对任何⼀条从根到叶⼦的路径上各个结点的颜色进行约束,红⿊树确保没有⼀条路径会⽐其他路径⻓出2倍,因而是接近平衡的。原创 2024-11-06 18:38:51 · 2164 阅读 · 71 评论 -
【C++】AVL树
🔖 流水不争,争的是滔滔不息AVL树通过维护树的平衡来确保搜索、插入和删除操作的时间复杂度始终为O(log n),其中n是树中节点的数量。这种自平衡特性使得AVL树在数据量较大时仍然能保持较高的效率。由于AVL树是一种二叉搜索树,它能够快速地定位到任何一个节点。这使得在数据量较大的情况下,查找特定节点的效率很高。原创 2024-11-06 17:40:55 · 1691 阅读 · 47 评论 -
【C++】STL----map和set
在C++中,set和map是常用的关联容器,分别用于存储不重复的元素和键值对(key-value pairs)。它们都在和头文件中定义,并基于红黑树实现,具有对数时间复杂度的插入、查找和删除操作。原创 2024-10-23 09:30:18 · 2083 阅读 · 98 评论 -
【C++】二叉搜索树
二叉搜索树(Binary Search Tree, BST)又称二叉排序树是一种二叉树,满足以下性质: 1. 节点的左子树上所有节点的值都小于该节点的值。 2. 节点的右子树上所有节点的值都大于该节点的值。 3. 左右子树也必须是二叉搜索树(递归定义)。原创 2024-10-16 20:05:59 · 1789 阅读 · 99 评论 -
【C++】多态
多态是⼀个继承关系的下的类对象,去调⽤同⼀函数,产⽣了不同的⾏为。⽐如Student继承了Person。Person对象买票全价,Student对象优惠买票。原创 2024-10-10 17:55:00 · 1809 阅读 · 73 评论 -
【C++】继承
Person是基类,也可以叫做父类。Student是派生类,也可以称为子类。原创 2024-10-05 11:30:04 · 2089 阅读 · 110 评论 -
【C++】模板补充
【优点】模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性【缺陷】模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。原创 2024-09-23 19:24:08 · 1151 阅读 · 93 评论 -
【C++】仿函数
仿函数(Functors)是一个在编程中常用的术语,特别是在面向对象编程和函数式编程中。它主要用于描述一个对象,这个对象表现得像函数一样,可以像调用函数一样使用。简单来说,仿函数是可以被调用的对象。在面向对象编程中,仿函数是通过重载函数调用运算符 operator() 实现的。一个仿函数对象的行为就像一个函数,尽管它本质上是一个类的实例。例如,在C++中,我们可以通过重载 operator() 来实现仿函数。原创 2024-09-22 07:15:00 · 625 阅读 · 44 评论 -
【C++】STL----deque
在这里简单介绍一下容器适配器。C++ 中的容器适配器(Container Adapters)是对标准容器(如 vector, list 等)的进一步封装,提供了更加简化的接口。**C++ 提供了三种容器适配器:stack、queue 和 priority_queue。**这些适配器并没有创建新的容器类型,而是通过对已有容器进行封装,使其具有某种特定的行为。适配器是一种设计模式。原创 2024-09-22 06:30:00 · 1317 阅读 · 55 评论 -
【C++】STL----stack和queue常见用法
在 C++ 中,stack 是一种标准模板库(STL)提供的容器适配器,它遵循“后进先出”(LIFO, Last In First Out)的原则。这意味着最后插入的元素最先被访问。stack 是通过底层容器(如 vector 或 deque)实现的。在C++中,queue 是一个非常有用的容器适配器,它提供了一种先进先出(FIFO, First In First Out)的数据结构。原创 2024-09-20 20:16:39 · 2021 阅读 · 75 评论 -
【C++】STL----list常见用法
在C++中,std::list 是一种双向链表数据结构,属于C++标准模板库(STL)中的容器之一。与std::vector相比,std::list在某些操作上有不同的性能特点,尤其是在频繁的插入和删除操作时具有优势。原创 2024-09-17 16:15:31 · 1901 阅读 · 85 评论 -
【C++】STL----vector常见用法
在C++中,vector是标准模板库(STL)中的一种动态数组容器,它允许存储同一类型的元素,并能自动调整大小。这与普通数组不同,vector的大小是可以动态改变的,即可以根据需要自动扩展或缩小。构造函数声明//无参构造//构造并初始化10个1//拷贝构造//使用迭代器进行初始化构造。原创 2024-09-11 18:24:42 · 1588 阅读 · 90 评论 -
【C++】string类
1. size()与length()方法底层实现原理完全相同,引入size()的原因是为了与其他容器的接口保持一致,一般情况下基本都是用size()。 2. clear()只是将string中有效字符清空,不改变底层空间大小。 3. resize(size_t n) 与 resize(size_t n, char c)都是将字符串中有效字符个数改变到n个,不同的是当字符个数增多时:resize(n)用0来填充多出的元素空间,resize(size_t n, char c)用字符c来填充多出的元原创 2024-09-06 19:21:15 · 1668 阅读 · 86 评论 -
C++模板
该语句不能通过编译,因为在编译期间,当编译器看到实例化时,需要推演其实参类型。通过实参i将T推演为int类型,通过实参m将T推演为double类型,但模板参数列表中只有一个T,编译器无法确定此处到底该将T确定为int或者double类型而报错。原创 2024-08-28 17:23:52 · 795 阅读 · 81 评论 -
C&C++内存管理
private:当可以默认构造的时候,也就是当A的构造函数是默认构造函数的时候。用下面这种方式很简单。delete p2;delete[]p3;return 0;但是当构造函数不是默认构造函数时,将上面A的构造改为半缺省的构造函数时就不是默认构造函数了。之前,时默认构造函数时。原创 2024-08-27 13:08:09 · 1783 阅读 · 72 评论 -
类和对象(下)
前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是**以⼀个冒号开始**,接着是⼀个以**逗号分隔的数据成员列表**,每个"**成员变量**"后⾯跟⼀个**放在括号中的初始值或表达式**。原创 2024-08-17 22:06:03 · 1197 阅读 · 85 评论 -
类和对象(中)
构造函数是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任务并不是开空间创建对象(我们常使⽤的局部对象是栈帧创建时,空间就开好了),而是初始化对象。构造函数的本质是要替代我们以前Stack和Date类中写的Init函数的功能,构造函数⾃动调⽤的特点就完美的替代的了Init。原创 2024-08-12 20:56:16 · 993 阅读 · 61 评论 -
类和对象(上)
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。1.定义在类里面的成员函数默认为inline。2.为了区分成员变量,一般习惯上成员变量会增加一个特殊标识,如成员变量前面或者后面加_或者m开头,注意c++中这个并不是强制的,只是一些惯例。原创 2024-08-09 20:23:39 · 960 阅读 · 54 评论 -
c++基础语法
定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。原创 2024-07-28 10:35:06 · 1132 阅读 · 52 评论