Learning Path
浏览 C++ 相关教程与章节。
主流编程语言、数据结构、设计模式、正则与基础算法。
教程
213
C++ 容器类 <map> 在 C++ 中,<map> 是标准模板库(STL)的一部分,它提供了一种关联容器,用于存储键值对(key-value pairs)。map 容器中的元素是按照键的顺序自动排序的,这使得它非常适合需要快速查找和有序数据的场景。 定义和特性 键值对:map 存储的是键值对,其中每个键都是唯一的。 排序:map 中的元素按照键的顺序自动排序,通常是升序。 ..
C++ 内存管理库 <memory> <memory> 是 C++ 标准库中的一个头文件,它包含了用于动态内存管理的模板和函数。 在 C++ 中,内存管理是一个重要的概念。动态内存管理允许程序在运行时分配和释放内存,这在处理不确定大小的数据结构时非常有用。然而,不正确的内存管理可能导致内存泄漏、野指针等问题。<memory> 头文件提供了智能指针等工..
C++ 标准库 <mutex> 在多线程编程中,确保数据的一致性和线程安全是至关重要的。 C++ 标准库提供了一套丰富的同步原语,用于控制对共享资源的访问。 C++ 标准库中的 <mutex> 头文件提供了一组工具,用于在多线程程序中实现线程间的同步和互斥。 <mutex> 头文件是 C++11 引入的,它包含了用于互斥锁(mutex)的类和函数。互..
C++ 内存管理库 <new> C++ 是一种功能强大的编程语言,它提供了丰富的标准库来帮助开发者更高效地编写代码。在 C++ 中,<new> 是一个非常重要的头文件,它包含了用于动态内存分配的函数和异常类型。动态内存分配允许程序在运行时请求内存,这在处理不确定大小的数据结构时非常有用。 <new> 头文件定义了以下几个关键组件: new 运算符:..
C++ 标准库 <numbers> 在 C++20 之前,我们写数学常量通常是这样: const double PI = 3.14159265358979323846; 问题非常明显:精度随手写、不统一、易写错、类型不安全。 C++20 正式引入 #include <numbers>,提供标准化数学常量集合,由编译器保证精度与类型正确性。 std::numbers 是 C+..
C++ 标准库 <numeric> 在日常 C++ 开发中,我们经常会遇到如下需求: 求数组总和 / 连乘 计算前缀和用于区间查询 批量累积生成新序列 做向量之间的内积(点积) 如果你还在手写 for 循环,那么 <numeric> 正是你应该掌握的标准库工具。 C++ 标准库中的 <numeric> 头文件提供了一组..
C++ 容器类 <priority_queue> 在 C++ 中,<priority_queue> 是标准模板库(STL)的一部分,用于实现优先队列。优先队列是一种特殊的队列,它允许我们快速访问队列中具有最高(或最低)优先级的元素。在 C++ 中,priority_queue 默认是一个最大堆,这意味着队列的顶部元素总是具有最大的值。 priority_queue 是一个容器适..
C++ 容器类 <queue> C++ 标准库中的 <queue> 头文件提供了队列(Queue)数据结构的实现。队列是一种先进先出(FIFO, First In First Out)的数据结构,它允许在一端添加元素(称为队尾),并在另一端移除元素(称为队首)。 队列是一种线性数据结构,它遵循以下规则: 元素只能从队尾添加。 元素只能从队首移除。 语法 在 C++ 中,队列..
C++ 标准库 <random> C++ 标准库中的 <random> 头文件提供了一组用于生成随机数的工具,涵盖了从简单的均匀分布到复杂的离散分布,为需要随机数的应用程序提供了广泛的选择。这些工具对于模拟、游戏开发、加密算法等领域非常有用。 <random> 不仅支持生成伪随机数,还支持种子控制、各种概率分布等,使得开发者可以灵活地生成符合特定需求的..
C++ 标准库 <regex> C++ 标准库中的 <regex> 头文件提供了正则表达式的功能,允许开发者使用一种非常灵活的方式来搜索、替换或分割字符串。正则表达式是一种强大的文本处理工具,广泛应用于数据验证、文本分析和模式匹配等领域。 正则表达式是一种使用单个字符串来描述、匹配一系列符合某个句法规则的字符串的模式。在 C++ 中,正则表达式通过 <regex&..
C++ 容器类 <set> C++ 标准库中的 <set> 是一个关联容器,它存储了一组唯一的元素,并按照一定的顺序进行排序。<set> 提供了高效的元素查找、插入和删除操作。它是基于红黑树实现的,因此具有对数时间复杂度的查找、插入和删除性能。 <set> 容器中存储的元素类型必须满足以下条件: 元素类型必须可以比较大小..
C++ 标准库 <sstream> 在 C++ 编程中,处理字符串和数字之间的转换是一项常见的任务。sstream 是 C++ 标准库中的一个组件,它提供了一种方便的方式来处理字符串流(可以像处理流一样处理字符串)。<sstream> 允许你将字符串当作输入/输出流来使用,这使得从字符串中读取数据或将数据写入字符串变得非常简单。 定义 sstream是 C++ 标准库中的一个命..
C++ 标准库 <stack> 在 C++ 中,标准库提供了多种容器和算法来帮助开发者更高效地编写程序。<stack> 是 C++ 标准模板库(STL)的一部分,它实现了一个后进先出(LIFO,Last In First Out)的数据结构。这种数据结构非常适合于需要“最后添加的元素最先被移除”的场景。 <stack> 容器适配器提供了一个栈的接口,..
C++ 异常处理库 <stdexcept> <stdexcept> 是 C++ 标准库中的一个头文件,它定义了一组标准异常类,用于处理程序运行时的错误情况。 异常是程序运行时发生的错误,它们可以被捕获并处理,以避免程序的非正常终止。<stdexcept> 头文件定义了一组从 std::exception 派生的异常类,这些类提供了一种标准的方式来报告..
C++ 标准库 <string> C++ 标准库(Standard Template Library, STL)是 C++ 的核心组成部分之一,提供了丰富的数据结构和算法。<string> 是 C++ 标准库中用于处理字符串的头文件。 在 C++ 中,字符串是由字符组成的序列。<string> 头文件提供了 std::string 类,它是对 C 风..
C++ 多线程库 <thread> C++11 引入了多线程支持,通过 <thread> 库,开发者可以轻松地在程序中实现并行处理。本文将将介绍 <thread> 库的基本概念、定义、语法以及如何使用它来创建和管理线程。 线程是程序执行的最小单元,是操作系统能够进行运算调度的最小单位。在多线程程序中,多个线程可以并行执行,提高程序的执行效率。 C++..
C++ 标准库 <type_traits> <type_traits> 是 C++ 标准库中一个非常有用的头文件,它包含了一组编译时检查类型特性的工具。这些工具可以帮助开发者在编译时确定类型的特性,从而实现更安全、更灵活的代码。 <type_traits> 头文件定义了一组模板,这些模板可以用于查询和操作类型属性。这些属性包括但不限于: 是否是整数..
C++ 标准库 <typeinfo> 在 C++ 中,<typeinfo> 是标准库的一部分,它提供了运行时类型识别(RTTI,Run-Time Type Identification)功能。RTTI 允许程序在运行时确定对象的类型。这是通过使用 typeid 运算符和 type_info 类实现的。 type_info 类是一个抽象基类,它提供了关于类型信息的接口。每个类型都..
C++ 标准库 <unordered_map> 在 C++ 中,<unordered_map> 是标准模板库(STL)的一部分,提供了一种基于哈希表的键值对容器。与 std::map 不同,unordered_map 不保证元素的排序,但通常提供更快的查找速度。 unordered_map 是一个关联容器,它存储了键值对(key-value pairs),其中每个键(key)都..
C++ 容器类 <unordered_set> 在C++中,<unordered_set> 是标准模板库(STL)的一部分,提供了一种基于哈希表的容器,用于存储唯一的元素集合。与 set 不同,unordered_set 不保证元素的排序,但通常提供更快的查找、插入和删除操作。 unordered_set 是一个模板类,其定义如下: #include std::unorde..
C++ 标准库 utility 在 C++ 标准库中,<utility> 头文件包含了一些实用的工具类和函数,这些工具类和函数在编写高效、可读性强的代码时非常有用。 utility 库的核心价值在于: 提供基础的数据结构和工具函数 简化常见编程任务的实现 为其他标准库组件提供基础支持 utility 头文件虽然小巧,但提供的工具非常实用: 组件/函数 用途 使用场景 std::pair 存..
C++ 标准库 <valarray> C++ 的 <valarray> 库是一个用于数值计算的库,它提供了一种高效的方式来处理数值数组。<valarray> 库中的 valarray 类模板允许程序员对数组进行元素级的数学运算,包括加法、减法、乘法、除法等。此外,它还支持更高级的数学函数,如指数、对数、正弦、余弦等。 valarray 是 C++ 标..
C++ <vector> at 函数 C++ 容器类 <vector> 在访问 vector 元素的所有方式中,at 是最安全的一种,因为它提供了边界检查。 at 是容器类的成员函数,用于返回指定位置的元素,同时进行边界检查。如果索引越界,会抛出 std::out_of_range 异常。 at 实现了安全的元素访问,让你在运行时能够捕获并处理越界错误。 单词释义: at..
C++ <vector> back 函数 C++ 容器类 <vector> 在 vector 的各种操作中,back 是一个非常实用的函数,用于获取最后一个元素。 back 是容器类的成员函数,用于返回容器的最后一个元素。它相当于 at(size()-1) 或 operator[](size()-1),但语义更清晰。 back 提供了直观的方式来访问容器的末尾元素,常用于栈..