C++
文章平均质量分 86
Q_hd
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】STL 知识回顾
容器通过空间配置器管理内存。容器使用迭代器来暴露其数据,使算法可以进行操作。算法使用迭代器访问容器中的数据,并且可以通过仿函数自定义操作行为。适配器通过组合现有的容器和算法提供新的数据结构和功能。仿函数提供自定义的操作逻辑,通常作为算法的参数。空间配置器管理容器的内存,以支持容器的高效存储和操作。原创 2024-08-16 16:56:27 · 1200 阅读 · 0 评论 -
【C/C++】语言基础知识回顾
内存对齐:自定义类型的内存对齐是确保数据在内存中按照特定字节边界排列,以提高访问效率和满足硬件要求。内存对齐的规则:第一个成员在与结构体变量偏移量为0的位置其他成员变量要对齐到对齐数的整数倍位置对齐数 = min( 编译器默认的对齐数 , 该成员变量大小 ) , VS下默认对齐数为8结构体总大小为每一个成员变量的最大对齐数的整数倍修改默认对齐数的方法: #pragma pack(8) , 设置默认对齐数为8为什么要有内存对齐为了平台的可移植。原创 2024-08-11 22:02:06 · 1300 阅读 · 0 评论 -
【C++】深入理解函数重载:C语言与C++的对比
在编程的世界里,函数重载是一个常见且强大的特性。它允许程序员使用同一个函数名来处理不同数据类型的操作,从而提高代码的可读性和可维护性。本文将深入探讨函数重载的概念、条件、价值以及在C语言和C++中的实现方式。在自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词的真实含义,这种现象被称为“重载”。在编程语言中,函数重载也允许一个函数名对应多个不同的实现。例如,在C++中,可以定义多个同名函数,但它们的参数类型、参数个数或参数顺序必须不同。原创 2024-07-19 22:40:34 · 1102 阅读 · 0 评论 -
【C++】深入解析C++智能指针:从auto_ptr到unique_ptr与shared_ptr
随着C++语言的发展,智能指针作为现代C++编程中管理动态分配内存的一种重要工具,越来越受到开发者的青睐。智能指针不仅简化了内存管理,还有助于避免内存泄漏等常见问题。本文将深入探讨智能指针的使用及其原理,从C++98标准库中的auto_ptr开始,逐步过渡到C++11中更为强大和灵活的智能指针类型,如unique_ptr和shared_ptr。此外,文章还将讨论循环引用问题、内存泄漏的原因及其危害,并提供相应的解决方案。通过本文的学习,读者将能够更好地理解和运用智能指针,编写出更安全、更高效的C++代码。原创 2024-05-26 09:37:50 · 1421 阅读 · 0 评论 -
【C++】C++异常处理精要:从传统C语言错误处理到现代C++异常机制
在软件开发中,错误处理是确保程序稳定性和健壮性的关键环节。C语言和C++语言在错误处理方面有着显著的不同。C语言通常采用返回错误码或终止程序的方式,而C++则引入了异常处理机制,提供了一种更为灵活和强大的错误处理方式。本文将深入探讨C语言的传统错误处理方式,C++的异常处理机制,以及如何高效地使用C++的异常处理来提高代码的可读性、可维护性和异常安全性。异常处理机制是一种编程范式,用于在程序运行时检测到错误和异常情况时采取相应的措施。原创 2024-05-23 22:23:15 · 1634 阅读 · 0 评论 -
【C++】C++中的比较工具:深入解析std::greater的用法与应用
在C++编程中,标准模板库(STL)提供了强大的工具和算法,以简化和优化代码。是STL中一个重要的模板类,它定义在头文件中。这个类实现了一个仿函数(function object),用于比较两个对象的大小,通常用于排序和优先队列等场景。本文将详细解释的定义、功能以及如何在实际编程中应用它。在C++中,greater是一个模板类,定义在头文件functional中。它可以接受任意类型的参数,并通过重载()操作符来进行比较。从上面的定义可以看出,greater。原创 2024-05-22 22:55:08 · 5054 阅读 · 0 评论 -
【C++】map与set容器的应用总结
选择使用哪种容器取决于具体的需求。如果需要有序性和快速查找,可以选择set和map;如果需要快速查找且不需要有序性,可以选择和;如果需要允许重复元素或键,可以选择multiset和multimap。原创 2024-03-15 14:05:26 · 685 阅读 · 0 评论 -
【C++】实现一个搜索二叉树(BSTree):从定义到操作全解析
首先,我们需要定义树的节点BSTreeNodepublic:K _key;// 节点存储的键V _value;// 节点存储的值// 左子节点// 右子节点通过本文的介绍,我们了解了二叉搜索树的基本概念、节点结构的定义以及如何实现插入、查找、删除和中序遍历等基本操作。实现一个搜索二叉树不仅能够加深对数据结构和算法的理解,也能够提升编程能力和问题解决能力。原创 2024-03-03 22:29:25 · 844 阅读 · 0 评论 -
【C++】重载、覆盖(重写)、隐藏(重定义): 理解多态性的关键概念
重载发生在同一个类中,当两个或多个函数拥有相同的名称但参数列表不同(参数类型、个数或顺序不同)时,这些函数就被认为是重载的。重载函数可以有不同的返回类型,只要参数列表不同即可。编译器根据函数调用时提供的参数类型和数量来选择合适的函数版本。覆盖发生在基类和派生类之间,当派生类定义一个与基类中具有相同名称、相同参数列表以及相同返回类型(或协变返回类型)的虚函数时,派生类中的函数被视为覆盖了基类中的函数。覆盖是实现运行时多态性的关键机制。原创 2024-03-02 14:32:54 · 811 阅读 · 0 评论 -
【C++】深入理解C++虚函数与纯虚函数
虚函数是在基类中使用关键字virtual声明的成员函数,它允许派生类对其进行重写(Override),实现运行时多态。当通过基类指针或引用调用虚函数时,实际调用的是对象类型对应的派生类中的函数,这个过程称为动态绑定(Dynamic Binding)或晚绑定(Late Binding)。虚函数重写指的是派生类中提供一个函数版本,该版本与基类中具有相同名称、相同返回类型和相同参数列表的虚函数相匹配。通过这种方式,派生类可以提供自己特定的实现,替换或扩展基类的行为。原创 2024-03-02 14:19:44 · 24720 阅读 · 1 评论 -
【C++】仿函数与函数指针:C++中的强大工具
函数指针是指向函数的指针。在C++中,函数也是一种特殊的数据类型,因此可以有指向函数的指针。函数指针使得程序能够根据需要调用不同的函数,增加了代码的灵活性和可重用性。仿函数,或称为函数对象,是一个行为类似函数的对象。在C++中,任何实现了operator()的类实例都可以作为仿函数。仿函数可以保存状态,这是它与普通函数和函数指针的一个重要区别。在C++中,使用std::sort函数进行排序时,既可以使用仿函数(Functor)也可以使用函数指针来自定义排序规则。原创 2024-03-01 22:10:27 · 1502 阅读 · 0 评论 -
【C++】继承与多态的常见问题解析
菱形继承:菱形继承是多继承的一种特殊情况。菱形继承的问题:从下面的对象成员模型构造,可以看出菱形继承有数据冗余和二义性的问题。在Assistant的对象中Person成员会有两份。public://姓名protected:int _num;// 学号protected:int _id;// 职工编号protected:// 主修课程// 这样会有二义性无法明确知道访问的是哪一个// 需要指明访问哪个父类成员可以解决二义性问题, 但是数据冗余问题无法解决。原创 2024-03-01 16:14:22 · 985 阅读 · 0 评论 -
【C++】深入探讨内存管理:malloc/free与new/delete的区别以及如何避免内存泄漏
内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。// 1.内存申请了忘记释放// 2.异常安全问题Func();// 这里Func函数抛异常导致 delete[] p3未执行,p3没被释放.原创 2024-02-19 19:46:44 · 604 阅读 · 0 评论 -
【C++】STL中List的详细实现解析
在 C++ STL(标准模板库)中,List是一个带头双向链表,可以存储多个元素并且支持动态调整大小,适合频繁插入和删除操作;而Vector是一个动态数组,元素在内存中是连续存储的,适合需要快速随机访问的场景。List提供了添加、删除、查找等操作,而Vector除了这些基本操作外,还提供了按索引访问元素、在指定位置插入元素等功能,进而就可以很好的支持排序算法,二分查找,堆算法等,它的缺点是扩容要付出一定的代价,而且除了尾上的插入和删除外其他位置的插入和删除都不快(因为要挪动数据)。原创 2024-02-19 16:38:22 · 1593 阅读 · 0 评论 -
【C++】模板类vector的简单实现
通过以上的实现和测试,我们可以看到,我们的简化版vector类能够成功地实现动态数组的功能,并且具备了基本的操作和容器相关的函数。当然,这只是一个简化版的实现,与STL库中的vector相比还有很多功能和细节需要进一步完善。希望本文能够帮助你更好地理解和使用vector容器。如果您对这篇博客内容有任何疑问或建议,欢迎在下方留言进行讨论。原创 2024-01-22 11:37:51 · 740 阅读 · 0 评论 -
【C++】容器的迭代器失效问题
迭代器失效问题是 C++ 程序设计中一个常见的问题。在使用容器进行添加/删除元素的操作时,指向容器元素的指针、引用或迭代器可能会失效,这将导致严重的程序错误。为了避免迭代器失效,我们需要了解哪些操作可能会导致迭代器失效,以及如何管理迭代器。原创 2024-01-22 10:54:04 · 1584 阅读 · 0 评论 -
【C++】题解:三道只出现一次的数字问题
在第一道题目中,我们使用异或运算来找出只出现一次的元素。由于异或运算的性质,相同的数字异或结果为0,任何数字与0异或仍然为它本身。因此,最终的结果就是那个只出现了一次的元素。在第二道题目中,我们使用位运算来找出只出现一次的元素。我们遍历32位二进制数的每一位,统计当前二进制位上1出现的次数。由于除了那个只出现一次的元素外,其他元素都出现了三次,所以1出现的次数必然是3的倍数或者0,不会是1或2。最终处理完32位二进制数的每一位后,就能得到只出现一次的元素。原创 2023-12-26 15:44:29 · 1074 阅读 · 0 评论 -
【C++】C++中的String类详解及模拟实现示例
string类简介在C++编程中,字符串是一种非常常见的数据类型,用于存储文本信息。C++标准库提供了string类来处理字符串,它提供了许多方法和功能,使得字符串操作更加方便和高效。原创 2023-12-10 21:47:49 · 1723 阅读 · 0 评论 -
【C++】探索C++模板编程
C++模板是一种通用的代码蓝图,允许根据不同类型的参数生成特定的函数或类。模板可以在编译时进行类型安全检查,并在运行时生成对应的代码,提高代码的复用性和性能。C++模板是一种强大的编程工具,可以实现泛型编程,提高代码的灵活性和复用性。通过使用模板,我们可以根据不同类型的参数生成特定的函数或类。本文介绍了C++模板的基本语法、类型模板参数和模板函数的示例,并展示了模板在实际开发中的应用。合理利用C++模板可以简化代码编写并提高程序的性能和可维护性。原创 2023-11-27 21:17:33 · 1269 阅读 · 0 评论 -
【C++】迭代器:遍历容器的利器
通过迭代器,我们可以方便地遍历和操作容器中的元素,使得C++中的容器类具有了更加灵活和统一的特性。同时,了解迭代器的基本概念和常见用法,对于编写高效、清晰的C++代码至关重要。希望本篇博客能够帮助读者更好地理解C++中迭代器的用法和意义。原创 2023-11-17 21:22:10 · 2039 阅读 · 0 评论 -
【C++】字符串处理:c_str()与sscanf()函数的完美结合
sscanf()函数是C/C++中一个非常有用的函数,可以方便地从字符串中提取格式化数据。结合c_str()函数,我们可以在C++中轻松地处理各种字符串数据,并进行格式化解析。希望这篇博客能够帮助你更好地理解和使用sscanf()函数,以及它与c_str()函数的结合使用。原创 2023-11-13 22:22:24 · 1216 阅读 · 0 评论 -
【C++】日期类实现,与日期计算相关OJ题
在软件开发中,处理日期是一项常见的任务。为了方便地操作日期,我们可以使用C++编程语言来创建一个简单的日期类。在本文中,我们将介绍如何使用C++实现一个基本的日期类,包括日期的加减、大小比较等功能。原创 2023-11-13 22:11:40 · 985 阅读 · 0 评论 -
【C++】初始化列表
C++中的初始化列表原创 2023-11-09 16:02:07 · 210 阅读 · 0 评论 -
【C++】类对象计数方法及实现原理
在这篇博客中,我们将讨论如何实现一个类,用于计算程序中创建了多少个类对象。我们将介绍三种不同的方法来实现这一功能,并对每种方法进行详细的讨论和示范。原创 2023-11-09 16:00:00 · 1059 阅读 · 0 评论 -
【C++】默认构造函数
默认构造函数(default constructor)就是不带任何参数的构造函数。默认的构造函数用来创建一个“原型(vanilla)对象”,当编译器需要创建一个对象而又不知任何细节时,默认的构造函数就显得非常重要。记住,一旦有了一个构造函数,编译器就会保证了不管什么情况下它总是会被调用。原创 2023-10-25 11:20:20 · 3418 阅读 · 0 评论 -
【C++】引用以及与指针的对比
2# 什么是引用?当谈到C++中的时,它是一种非常重要的概念。引用允许我们来操作变量,它提供了一种简洁而有效的方法来处理数据。原创 2023-10-20 22:24:43 · 124 阅读 · 0 评论
分享