C++ 异常处理
C++ 异常处理异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。try: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。 如果有一个块抛出一个异常,捕获异常的方法会使用 try 和 catch 关键字。try 块中放置可能抛出异常的代码,try 块中的代码被称为保护代码。使用 try/catch 语句的语法如下所示: try{// 保护代码}catch( ExceptionName e1 ){// catch 块}catch( ExceptionName e2 ){// catch 块}catch( ExceptionName eN...
C++ 常量
C++ 常量 常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数据类型,可分为整型数字、浮点数字、字符、字符串和布尔值。常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 整数常量整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。下面列举几个整数常量的实例: 212 // 合法的215u // 合法的0xFeeL // 合法的078 // 非法的:8 不是八进制的数字032UU // 非法的:不能重复后缀 以下是各种类型的整数常量的实例: 85 // 十进制0213 // 八进制0x4b // 十六进制30...
C++ 容器类 <vector>
C++ 容器类 简介C++ 标准库(Standard Template Library, STL)是 C++ 的一个重要组成部分,它提供了一组通用的模板类和函数,用于处理数据集合。 是 STL 中的一个容器类,用于存储动态大小的数组。 是一个序列容器,它允许用户在容器的末尾快速地添加或删除元素。与数组相比, 提供了更多的功能,如自动调整大小、随机访问等。语法在 C++ 中,使用 需要包含头文件 <>。以下是一些基本的语法: 声明一个 vector:std::vector myVector; 添加元素:myVector.push_back(10); 访问元素:int firstElement = myVector[0]; 获取元素数量:size_t size = myVector.size(); 清空 vector:myVector.clear(); 声明与初始化 需要指定元素类型,可通过多种方式进行初始化:#include #include int main() { std::vector vec1; ...
C++ 容器类 <unordered_set>
C++ 容器类 在C++中, 是标准模板库(STL)的一部分,提供了一种基于哈希表的容器,用于存储唯一的元素集合。与 set 不同,unordered_set 不保证元素的排序,但通常提供更快的查找、插入和删除操作。unordered_set 是一个模板类,其定义如下:#include std::unordered_set<Key, Hash = std::hash, Pred = std::equal_to, Alloc = std::allocator> Key 是存储在 unordered_set 中的元素类型。Hash 是一个函数或函数对象,用于生成元素的哈希值,默认为 std::hash。Pred 是一个二元谓词,用于比较两个元素是否相等,默认为 std::equal_to。Alloc 是分配器类型,用于管理内存分配,默认为 std::allocator。 语法以下是一些基本的 unordered_set 操作: 构造函数:创建一个空的 unordered_set。std::unordered_set...
C++ 容器类 <set>
C++ 容器类 C++ 标准库中的 是一个关联容器,它存储了一组唯一的元素,并按照一定的顺序进行排序。 提供了高效的元素查找、插入和删除操作。它是基于红黑树实现的,因此具有对数时间复杂度的查找、插入和删除性能。 容器中存储的元素类型必须满足以下条件: 元素类型必须可以比较大小。元素类型必须可以被复制和赋值。 语法包含头文件:#include 声明 set 容器std::set<元素类型> 容器名;常用操作 insert(元素): 插入一个元素。erase(元素): 删除一个元素。find(元素): 查找一个元素。size(): 返回容器中元素的数量。empty(): 检查容器是否为空。 实例下面是一个使用 的简单示例,包括元素的插入、查找、删除和输出结果。实例#include #include int main() { // 声明一个整型 set 容器 std::set mySet; // 插入元素 mySet.insert(10); mySet.insert(20); ...
C++ 容器类 <queue>
C++ 容器类 C++ 标准库中的 头文件提供了队列(Queue)数据结构的实现。队列是一种先进先出(FIFO, First In First Out)的数据结构,它允许在一端添加元素(称为队尾),并在另一端移除元素(称为队首)。队列是一种线性数据结构,它遵循以下规则: 元素只能从队尾添加。元素只能从队首移除。 语法在 C++ 中,队列的语法如下:#include // 声明队列std::queue q;这里 Type 是队列中存储元素的数据类型。常用操作队列提供了以下常用操作: empty(): 检查队列是否为空。size(): 返回队列中的元素数量。front(): 返回队首元素的引用。back(): 返回队尾元素的引用。push(): 在队尾添加一个元素。pop(): 移除队首元素。 实例下面是一个使用 C++ 标准库 的简单实例:实例#include #include int main() { // 创建一个整数队列 std::queue q; // 向队列中添加元素 ...
C++ 容器类 <priority_queue>
C++ 容器类 在 C++ 中, 是标准模板库(STL)的一部分,用于实现优先队列。优先队列是一种特殊的队列,它允许我们快速访问队列中具有最高(或最低)优先级的元素。在 C++ 中,priority_queue 默认是一个最大堆,这意味着队列的顶部元素总是具有最大的值。priority_queue 是一个容器适配器,它提供了对底层容器的堆操作。它不提供迭代器,也不支持随机访问。语法以下是 priority_queue 的基本语法:#include // 声明一个整型优先队列priority_queue pq; // 声明一个自定义类型的优先队列,需要提供比较函数struct compare { bool operator()(int a, int b) { return a > b; // 这里定义了最小堆 }};priority_queue<int, vector, compare> pq_min;常用操作 empty(): 检查队列是否为空。size():...
C++ 容器类 <map>
C++ 容器类 在 C++ 中, 是标准模板库(STL)的一部分,它提供了一种关联容器,用于存储键值对(key-value pairs)。map 容器中的元素是按照键的顺序自动排序的,这使得它非常适合需要快速查找和有序数据的场景。定义和特性 键值对:map 存储的是键值对,其中每个键都是唯一的。排序:map 中的元素按照键的顺序自动排序,通常是升序。唯一性:每个键在 map 中只能出现一次。双向迭代器:map 提供了双向迭代器,可以向前和向后遍历元素。 基本语法包含头文件:#include 声明 map 容器:std::map<key_type, value_type> myMap; key_type 是键的类型。value_type 是值的类型。 插入元素:myMap[key] = value;访问元素:value = myMap[key];遍历 map:for (std::map<key_type, value_type>::iterator it = myMap.begin(); it !=...
C++ 容器类 <list>
C++ 容器类 C++ 标准库提供了丰富的功能,其中 是一个非常重要的容器类,用于存储元素集合,支持双向迭代器。 是 C++ 标准模板库(STL)中的一个序列容器,它允许在容器的任意位置快速插入和删除元素。与数组或向量()不同, 不需要在创建时指定大小,并且可以在任何位置添加或删除元素,而不需要重新分配内存。语法以下是 容器的一些基本操作: 包含头文件:#include 声明列表:std::list mylist;,其中 T 是存储在列表中的元素类型。插入元素:mylist.push_back(value);删除元素:mylist.pop_back(); 或 mylist.erase(iterator);访问元素:mylist.front(); 和 mylist.back();遍历列表:使用迭代器 for (auto it = mylist.begin(); it != mylist.end(); ++it)特点 双向迭代: 提供了双向迭代器,可以向前和向后遍历元素。动态大小:与数组不同,...
C++ 容器类 <array>
C++ 容器类 C++11 标准引入了 头文件,它提供了一种固定大小的数组容器,与 C 语言中的数组相比,具有更好的类型安全和内存管理特性。std::array 是 C++ 标准库中的一个模板类,它定义在 头文件中。std::array 模板类提供了一个固定大小的数组,其大小在编译时确定,并且不允许动态改变。语法std::array 的基本语法如下:#include std::array<T, N> array_name; T 是数组中元素的类型。N 是数组的大小,必须是一个非负整数。 声明与初始化 需要在编译时确定大小,不能动态改变。使用示例:#include #include int main() { std::array<int, 5> arr = {1, 2, 3, 4, 5}; // 声明一个定长为5的int数组 return 0;}特点 类型安全:std::array 强制类型检查,避免了 C...