![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 83
C++学习、使用、累计经验、避坑
静寂星河
我行殊未已,何日复归来。
展开
-
C++初学者指南-5.标准库(第一部分)--标准库范围比较算法
这篇文档介绍了C++标准库中与比较算法相关的函数,包括equal、mismatch、lexicographical_compare和lexicographical_compare_three_way,以及它们的用法和示例。文章提供了对这些函数的调用方式和参数解释,展示了如何比较范围内的元素。此外,还提供了关联的文档和在线资源。原创 2024-07-21 22:51:23 · 683 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--标准库查找算法
本文介绍了C++标准库中的各种查找算法,包括定位单个元素、子范围查找、与范围的比较等。具体分析了多个函数的使用案例,如find、find_if、find_if_not等,并提供了代码示例以帮助学习者理解。文中还提到自定义比较函数的使用和连续元素查找的相关内容,目的是帮助初学者掌握C++查找算法的基本应用。原创 2024-07-20 22:05:34 · 955 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--标准库查询存在算法
本文介绍了C++初学者指南中关于标准库查询算法的内容,包括any_of/all_of/none_of、count和count_if等算法的用法和示例。此外,还提供了相关内容的视频和链接供进一步学习参考。原创 2024-07-20 15:35:45 · 275 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--标准库最小/最大算法
本文介绍了C++标准库中的一些常用最大最小值算法,如min、max、minmax、clamp、min_element、max_element和minmax_element等,并附有详细的示例代码和解释。这些算法能够方便地获取给定范围或容器内的最小值、最大值或者最小最大值对,并支持自定义比较函数的使用。这些有用的标准库算法可以帮助C++初学者更好地掌握和运用C++标准库。原创 2024-07-18 22:28:54 · 735 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--容器遍历
本文介绍了C++初学者指南中关于标准库中容器遍历的内容,包括前向遍历、基于范围的循环、逆向遍历等。其中涵盖了不同遍历方式的优缺点以及代码示例,帮助读者更好地理解如何在C++中进行容器遍历。原创 2024-07-16 21:28:31 · 932 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--标准库算法介绍
本文概括介绍了C++标准库中的各种算法。这些算法是基础构件,可在(迭代器)范围的元素上进行操作。它们以通用和高效的方式实现,并且许多可以通过自定义函数对象或lambda进行定制。C++17引入的并行执行以及C++20中更优化的标准算法范围接口,进一步提升了标准算法的性能和可用性。原创 2024-07-14 17:21:44 · 694 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--标准库关联容器
本文介绍了C++标准库中的关联容器,包括集合和映射的概念、接口用法以及相关内容。关联容器可以唯一排序或哈希键,支持存储键值对映射。标准集合和映射基于节点连接实现,有序集合通常使用平衡二叉树,无序集合则利用哈希表。原创 2024-07-12 21:53:07 · 552 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--顺序视图
本文介绍了C++标准库中的顺序视图,着重介绍了std::string_view(C++17)和std::span(C++20)两个重要特性。其中,std::string_view是一个轻量级、只读的字符串视图,避免不必要的内存分配,而std::span是一个非拥有视图,可以用于连续内存块的访问和操作。原创 2024-07-11 10:39:53 · 783 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--顺序容器
本文介绍了C++标准库中顺序容器的相关内容,包括标准顺序容器如array、vector、deque、list和forward_list的特点、常见操作、接口概览以及选择指导方针。文章强调了每种容器的特性和适用场景,为初学者提供了清晰的指导。原创 2024-07-09 11:59:51 · 741 阅读 · 0 评论 -
C++初学者指南-5.标准库(第一部分)--迭代器
本文介绍了C++中关于标准库中迭代器的重要概念:包括默认迭代器、反向迭代器、基于迭代器的循环、交换相邻元素、迭代器范围、迭代器范围中的元素数量等。原创 2024-07-07 22:38:09 · 1087 阅读 · 0 评论 -
C++初学者指南-4.诊断---valgrind
本文简单介绍了内存检测工具软件Valgrind的使用方法。原创 2024-07-07 12:11:29 · 343 阅读 · 0 评论 -
C++初学者指南-4.诊断---未定义行为检测器
本文简单介绍了编译器的未定义行为检测功能。原创 2024-07-07 11:43:44 · 150 阅读 · 0 评论 -
C++初学者指南-4.诊断---地址检测器
本文介绍了用编译器来对可能得内存问题进行检测的方法。原创 2024-07-06 20:57:33 · 263 阅读 · 0 评论 -
C++初学者指南-4.诊断---用gdb调试
本文介绍了C++初学者指南中关于使用gdb调试的内容。主要讨论了gdb调试器的使用方法、调试编译和程序、设置断点、单步执行程序、管理断点以及常用的gdb命令。同时列举了几种gdb前端工具供选择。原创 2024-07-05 23:25:18 · 1249 阅读 · 0 评论 -
C++初学者指南-4.诊断---基础:警告和测试
本文介绍了针对C++初学者的诊断基础知识,包括警告、断言和测试。重点讨论了编译器警告的重要性和各种编译器选项,以及在代码中使用断言的方法和静态断言的概念。此外,还介绍了测试的指南,如使用断言、编写测试和测试框架的选择。原创 2024-07-04 23:39:13 · 1060 阅读 · 0 评论 -
C++初学者指南-3.自定义类型(第一部分)-异常
本文介绍了C++中关于自定义类型和异常处理的指南。主要涵盖了异常的定义和处理方式,包括异常的用途、标准库异常、异常的替代方案以及异常的保证和处理方法。此外,文中还提及了使用RAII避免内存泄漏的重要性。原创 2024-07-03 22:58:15 · 980 阅读 · 0 评论 -
C++初学者指南-3.自定义类型(第一部分)-析构函数
本文介绍了C++初学者指南中关于自定义类型和析构函数的重要内容。主要涵盖了特殊的成员函数如构造函数和析构函数的作用,RAII资源管理的重要性以及避免编写特殊成员函数的建议。原创 2024-07-02 21:33:53 · 655 阅读 · 0 评论 -
C++初学者指南-3.自定义类型(第一部分)-指针
本文介绍了C++初学者指南中关于自定义类型中指针的重要内容。主要包括指针的作用、T类型对象指针、操作符、nullptr、const和指针、this指针、前置类型声明以及避免使用指针的建议。原创 2024-07-01 14:38:23 · 965 阅读 · 0 评论 -
C++初学者指南-3.自定义类型(第一部分)-类和基本自定义类型
自定义类型是面向对象编程中的重要概念。它们通过提供更好的正确性保证、可复用的抽象和资源管理来补充基本类型和简单的聚合类型。自定义类型通过限制成员访问、定义成员函数、用户定义的构造函数和初始化机制等来实现这些目标。设计自定义类型时应遵循一些约定和风格,如保持数据成员私有、使用明确的接口、避免Setter/Getter对等。原创 2024-06-29 23:55:43 · 676 阅读 · 0 评论 -
C++初学者指南-2.输入和输出---从输入流错误中恢复
文章介绍了C++初学者在处理输入流时可能遇到的问题以及相应的解决方案。主要探讨了当输入无效时如何从错误中恢复,避免输入错误影响后续的正常输入。文章提供了一个实用的解决方案,即通过清除输入流的错误状态和缓冲区来重置输入流,从而确保后续输入顺利进行。原创 2024-06-27 20:59:32 · 397 阅读 · 0 评论 -
C++初学者指南-2.输入和输出---流输入和输出
本文介绍了C++中流输入输出的用法。首先讲解了如何自定义输入输出操作,通过重载运算符实现对自定义类型的输入输出。接着介绍了常用的标准库流类型,如istream、ostream、ifstream等。最后介绍了一些流操作的辅助工具,包括使用getline读取一行、使用ignore跳过字符、以及格式化输出等。原创 2024-06-26 21:18:10 · 455 阅读 · 0 评论 -
C++初学者指南-2.输入和输出---文件输入和输出
本文介绍了C++中文件输入输出的基本概念和用法,包括如何写入和读取文本文件,如何打开和关闭文件,以及不同的文件打开模式。文章还给出了一个简单的二进制文件读写示例程序。文章内容全面而实用,对C++初学者来说是一个很好的入门资料。原创 2024-06-25 20:33:25 · 659 阅读 · 0 评论 -
C++初学者指南-2.输入和输出---命令行参数
本文介绍了在C++中如何处理命令行参数。它解释了命令行参数的概念、如何在C++中访问它们、如何将它们转换为C++数据类型,并简单介绍了一些命令行参数解析库。这些知识对于编写基于命令行的C++程序非常有用。原创 2024-06-24 21:36:20 · 555 阅读 · 0 评论 -
C++初学者指南第一步---14.函数调用机制
本文探讨了 C++ 中函数调用的机制。它解释了栈和堆在内存中的作用、函数调用过程中栈中元素的变化、引用局部变量的风险以及编译器的一些优化技术。通过详细的图解说明了函数调用的具体流程,有助于初学者深入理解 C++ 中函数的工作原理。原创 2024-06-23 22:58:22 · 803 阅读 · 0 评论 -
C++初学者指南第一步---13.聚合类型
C++中的聚合类型为开发者提供了一种组织和管理数据的有效方式。通过定义自定义的聚合类型,开发者可以改善接口的可用性和正确性,同时还可以自定义初始化、复制和内存布局等行为。聚合类型具有值语义,即成员变量的值被完全复制,而不是仅复制引用。开发者还可以利用标准库容器如std::vector来存储聚合类型对象,从而获得更加灵活和强大的功能。尽管在某些情况下使用聚合类型的语法会产生细微的歧义,但总的来说,聚合类型为C++编程带来了更好的抽象和表达能力。原创 2024-06-23 17:02:04 · 871 阅读 · 0 评论 -
C++初学者指南第一步---12.引用
C++引用是一种特殊的变量类型,它是对另一个变量的别名,可以提高代码的效率和可读性。引用分为非常量引用和常量引用,还可以使用auto关键字自动推导引用类型。合理使用引用可以避免不必要的内存开销和悬空引用等问题,提高编程效率。原创 2024-06-22 16:56:32 · 1423 阅读 · 0 评论 -
C++初学者指南第一步---11.字符串(基础)
本文概述了 C++ 中的字符串基础知识。主要介绍了 std::string 类型的基本用法、字符类型 char 的特性、常见的字符串操作、字符串字面量以及类似字符串的函数参数等内容。文章通过代码示例和配图详细阐述了这些概念,为 C++ 初学者提供了全面的入门指导。原创 2024-06-21 21:43:56 · 1011 阅读 · 0 评论 -
C++初学者指南第一步---10.内存(基础)
这篇文章介绍了C++中内存的基础知识。它解释了C++的抽象内存模型和内存实际处理的解决方案。此外,它还讨论了自动存储和动态存储(使用std::vector)的相关概念。通过这篇文章,读者可以了解C++内存管理的基本原理。原创 2024-06-20 23:03:26 · 1204 阅读 · 0 评论 -
C++初学者指南第一步---9.函数
C++中函数是一个重要的编程概念。本文介绍了函数的基本用法,包括输入输出、返回类型、参数类型、函数重载、递归调用、声明和定义等。文章还讨论了函数设计的一些最佳实践,如前置条件检查、[[nodiscard]]属性和noexcept异常保证,以及一些常用的数学函数。整体来说,这是一篇全面、深入地介绍了C++函数编程的良好指南。原创 2024-06-20 15:43:44 · 1209 阅读 · 0 评论 -
C++初学者指南第一步---8.类型系统(基础)
本文介绍了 C++ 中类型系统的基础知识,包括使用 const 声明常量、类型别名、自动类型推导 auto 以及常量表达式 constexpr。作者通过各种示例详细阐述了这些概念的使用方法,帮助初学者更好地理解 C++ 的类型系统。原创 2024-06-19 22:46:10 · 436 阅读 · 0 评论 -
C++初学者指南第一步---7.控制流(基础)
本文介绍了C++初学者需要掌握的基础控制流语法,包括条件分支(if-else)、Switch语句、三元运算符以及循环迭代(for、while、do-while)等。作者对每个概念进行了详细讲解,并给出了示例代码,帮助读者更好地理解和掌握这些基本语法。原创 2024-06-19 21:10:22 · 949 阅读 · 0 评论 -
C++初学者指南第一步---6.枚举和枚举类
本文介绍了C++中枚举和枚举类的概念,包括作用域的枚举(enum class)和无作用域的枚举(enum),以及它们之间的区别。此外,还阐述了枚举类的基础类型、自定义枚举类映射以及与基础类型之间的转换。通过这些内容,初学者可以全面了解C++中枚举和枚举类的基础知识。原创 2024-06-18 20:33:49 · 760 阅读 · 0 评论 -
C++初学者指南 内存管理篇--4.C++内存分配器Allocator
C++内存分配器(Allocator)是用于管理内存分配的通用接口。它可以使容器逻辑与内存分配策略解耦、提高内存分配的速度和确保内存可用。C++内存分配器支持自定义分配策略,并可用于大部分标准容器。C++17中引入的多态内存资源(std::pmr命名空间)进一步增强了内存分配器的功能,允许容器在运行时更改分配器,并提供了多种内存资源管理器供选择。原创 2024-06-08 21:28:41 · 620 阅读 · 0 评论 -
C++初学者指南 内存管理篇--3.C++手动内存管理
本文介绍了C++手动内存管理的基础知识,包括栈内存、堆内存的分配和释放,以及避免内存泄漏和其他常见内存管理错误的建议和工具。重点强调了现代C++使用智能指针与之前手动管理原始指针的区别,并介绍了内存检查工具ASAN和Valgrind。文章还探讨了异常处理对内存管理的影响,以及如何通过合理的编程实现异常安全性。原创 2024-06-05 22:26:39 · 777 阅读 · 0 评论 -
C++初学者指南 内存管理篇--2.C语言风格数组
C++初学者在使用数组时需要注意一些细节。C语言风格数组是一种常见但不完美的数组表示方式,有一些限制和缺点,例如不可深拷贝、退化为指针、动态大小设置等问题。建议初学者在合适的情况下考虑使用C++标准库提供的容器,如vector,以获得更好的可用性和安全性。同时也需要熟悉C语言风格数组的基本操作,如数组初始化、访问、传递给函数等。原创 2024-06-02 22:26:21 · 564 阅读 · 0 评论 -
C++初学者指南 内存管理篇--1.C/C++指针及运算
本文介绍了C++指针的基本特性和运算操作。指针存储的是内存地址,不同类型的数据占用的内存空间大小不同。通过递增/递减指针,可以访问指针指向的内存空间中的下一个/上一个元素。还介绍了指针的下标运算、空指针、指向对象的指针以及指向指针的指针等概念。同时也解释了取地址(&)和解引用(*)操作符的作用。这些内容有助于读者更好地理解和应用指针在C++编程中的作用。原创 2024-06-01 13:41:23 · 401 阅读 · 0 评论 -
C++初学者指南第一步---5.介绍std::vector
C++标准库中的std::vector是一种动态数组容器,它提供了灵活的内存管理和常见的数组操作,是C++初学者必须掌握的基础知识之一。本文从初始化、添加元素、调整大小、删除元素以及深拷贝等方面进行了全面而详细的介绍,帮助读者快速理解和掌握std::vector的基本使用方法。原创 2024-06-17 21:59:24 · 417 阅读 · 0 评论 -
C++初学者指南第一步---4.基本类型
C++中的基本类型是所有复杂数据结构的基础。本文概述了C++中的基本类型,包括布尔型、字符型、有符号整数、无符号整数和浮点数类型。文章还介绍了常见的数字表示方法、算术运算、比较运算、逻辑运算、内存大小和数值范围等相关知识。此外,文章还讨论了类型缩小、花括号初始化、位运算以及算术转换和提升等概念。原创 2024-06-16 00:01:41 · 985 阅读 · 0 评论 -
C++初学者指南第一步---3.输入和输出(基础)
本文向初学者介绍了C++中输入和输出的基础知识。文章描述了I/O流的概念以及 std::cin、std::cout、std::clog 和 std::cerr 的使用方法。同时还介绍了流操作符 >> 和原创 2024-06-15 17:24:16 · 328 阅读 · 0 评论 -
C++初学者指南第一步---2. Hello world
本文为 C++ 初学者提供了如何编写和编译第一个 "Hello World" 程序的指南。它详细解释了 C++ 源代码的基本结构和关键概念,包括预处理器命令、注释、main 函数、标准库的使用以及编译和链接过程。文章还提供了一些编译器标志的建议,并指出了使用 "using namespace std;" 的潜在问题。总的来说,这是 C++ 初学者入门的一个很好的参考。原创 2024-06-15 13:23:26 · 696 阅读 · 0 评论