C++ 标准库 <mutex>
C++ 标准库 在多线程编程中,确保数据的一致性和线程安全是至关重要的。C++ 标准库提供了一套丰富的同步原语,用于控制对共享资源的访问。C++ 标准库中的 头文件提供了一组工具,用于在多线程程序中实现线程间的同步和互斥。 头文件是 C++11 引入的,它包含了用于互斥锁(mutex)的类和函数。互斥锁是一种同步机制,用于防止多个线程同时访问共享资源。互斥锁(Mutex)是一个用于控制对共享资源访问的同步原语。当一个线程需要访问共享资源时,它会尝试锁定互斥锁。如果互斥锁已经被其他线程锁定,请求线程将被阻塞,直到互斥锁被释放。基本语法在 C++ 中, 头文件提供了以下主要类: std::mutex:基本的互斥锁。std::recursive_mutex:递归互斥锁,允许同一个线程多次锁定。std::timed_mutex:具有超时功能的互斥锁。std::recursive_timed_mutex:具有超时功能的递归互斥锁。 实例 使用 std::mutex下面是一个简单的示例,展示了如何在 C++ 中使用 std::mutex 来同步对共享资源的访问。实例 #include...
C++ 标准库 <iterator>
C++ 标准库 C++ 标准库中的 头文件提供了一组工具,用于遍历容器中的元素。迭代器是 C++ 标准模板库(STL)中的核心概念之一,它允许程序员以统一的方式访问容器中的元素,而不需要关心容器的具体实现细节。迭代器是一个对象,它提供了一种方法来遍历容器中的元素。迭代器可以被视为指向容器中元素的指针,但它比指针更加灵活和强大。迭代器可以用于访问、修改容器中的元素,并且可以与 STL 算法一起使用。迭代器主要分为以下几类: 输入迭代器(Input Iterator):只能进行单次读取操作,不能进行写入操作。输出迭代器(Output Iterator):只能进行单次写入操作,不能进行读取操作。正向迭代器(Forward Iterator):可以进行读取和写入操作,并且可以向前移动。双向迭代器(Bidirectional Iterator):除了可以进行正向迭代器的所有操作外,还可以向后移动。随机访问迭代器(Random Access...
C++ 标准库 <iomanip>
C++ 标准库 是 C++ 标准库中的一个头文件,它提供了对输入/输出流的格式化操作。iomanip 库中的函数允许开发者控制输出格式,如设置小数点后的位数、设置宽度、对齐方式等。iomanip 是 Input/Output Manipulators 的缩写,它提供了一组操作符,用于控制 C++ 标准库中的输入/输出流的格式,适用以下场景:科学计算中浮点数格式的处理;数据对齐与美化;显示特定进制或格式的数值。语法iomanip 库中的函数通常与 << 和 >> 操作符一起使用,以实现对输出流的控制。以下是一些常用的 iomanip 函数:函数/操纵符功能实例代码输出结果std::setw(int n)设置字段宽度,为下一次输出指定宽度std::cout << std::setw(5) << 42;42std::setfill(char)设置填充字符(默认是空格)std::cout << std::setfill(‘*’) << std::setw(5)...
C++ 标准库 <future>
C++ 标准库 C++11 引入了 头文件,它提供了一种异步编程的机制,允许程序在等待某个操作完成时继续执行其他任务。 库是 C++ 标准库中并发编程的一部分,它允许程序员以一种更简洁和安全的方式处理异步操作。 库中定义了几个关键的类型: std::future:表示异步操作的结果,可以查询操作的状态,获取结果或等待操作完成。std::promise:用于与 std::future 配对,用于设置异步操作的结果。std::packaged_task:封装一个函数或可调用对象,使其可以作为异步任务执行。 std::promisestd::promise 用于设置异步操作的结果。它与 std::future 配对使用。实例#include #include int main() { std::promise prom; std::future fut = prom.get_future(); // 在另一个线程中设置结果 std::thread t(prom { prom.set_value(10); ...
C++ 标准库 <functional>
C++ 标准库 C++ 标准库中的 头文件提供了一组函数模板,这些模板允许我们使用函数对象(function objects)作为参数传递给算法,或者作为算法的返回值。函数对象是那些重载了 operator() 的对象,它们可以像普通函数一样被调用。在 C++ 中,函数对象是一种特殊的类,它重载了 operator() 来允许对象像函数一样被调用。这使得我们可以将行为作为对象传递,增加了代码的灵活性和可重用性。语法要使用 头文件中的功能,你需要在你的 C++ 程序中包含这个头文件:#include 常用函数对象...
C++ 标准库 <exception>
C++ 标准库 在 C++ 编程中,异常处理是一种重要的错误处理机制,它允许程序在遇到错误时,能够优雅地处理这些错误,而不是让程序崩溃。在 C++ 中,异常处理通常使用 try、catch 和 throw 关键字来实现。标准库中提供了 std::exception 类及其派生类来处理异常。C++ 标准库中的 头文件提供了一套异常处理的基础设施,包括异常类、异常处理机制等。异常是程序运行时发生的一个事件,它中断了正常的指令流程。在C++中,异常可以是任何类型的对象,但通常是一个异常类的对象。C++标准库定义了一些基本的异常类,如 std::exception、std::bad_alloc、std::bad_cast 等。 你可以通过定义自己的异常类来扩展异常处理功能,或者使用标准库中已有的异常类来处理常见的异常情况。语法抛出异常在 C++ 中,使用 throw 关键字来抛出一个异常,语法如下: throw exception_object;捕获异常使用 try 和 catch 关键字来捕获和处理异常,语法如下:try { // 可能抛出异常的代码}...
C++ 标准库 <deque>
C++ 标准库 在 C++中, 是标准模板库(STL)的一部分,它提供了双端队列(double-ended queue)的实现。双端队列是一种允许在两端进行插入和删除操作的线性数据结构。 的全称是 “double-ended queue”,它在C++中以模板类的形式存在,允许存储任意类型的数据。 是一个动态数组,它提供了快速的随机访问能力,同时允许在两端进行高效的插入和删除操作。这使得 成为处理需要频繁插入和删除元素的场景的理想选择。语法在 C++ 中,使用 需要包含头文件 #include 。以下是 的基本语法:#include #include int main() { std::deque myDeque; // 创建一个整数类型的双端队列 // 接下来可以进行插入、删除等操作 return 0;}常用操作下面是 std::deque 容器的一些常用成员函数:函数名称功能描述deque()默认构造函数,创建一个空的 deque 容器。deque(size_type n)创建一个包含 n 个默认值元素的...
C++ 标准库 <cwchar>
C++ 标准库 是 C++ 标准库中的一个头文件,提供了处理宽字符(wchar_t)和宽字符串的函数。这些函数大部分来自 C 标准库的 <wchar.h>,用于处理宽字符的输入输出、内存操作、字符串操作和其他与宽字符相关的功能。语法cwchar 头文件中定义的函数通常具有与标准字符处理函数相似的名称,但以 w 开头,例如 wprintf、wscanf 等。这些函数的参数和返回类型也与相应的标准字符函数不同,它们使用宽字符类型 wchar_t。基本类型 wchar_t:宽字符类型,用于存储宽字符。wint_t:用于存储宽字符函数的返回值。 常用函数 宽字符输入输出 fgetwc:从文件流中读取宽字符。fputwc:向文件流中写入宽字符。fgetws:从文件流中读取宽字符串。fputws:向文件流中写入宽字符串。 实例#include #include int main() { // 使用 fputws 和 fgetws 进行宽字符串输入输出 const wchar_t *filename =...
C++ 标准库 <ctime>
C++ 标准库 C++ 标准库提供了丰富的功能,其中 是处理时间和日期的标准库之一。它提供了一组函数,用于获取当前时间、日期以及执行时间相关的计算。 库定义了一组与时间相关的函数和类型,这些函数和类型允许程序员在程序中处理时间。它包括: time_t:表示时间的类型,通常是一个长整型。tm:一个结构体,用于表示时间的各个部分,如年、月、日、小时等。一系列函数,如 time(), localtime(), gmtime(), strftime() 等。 语法以下是 库中一些常用函数的基本语法: 获取当前时间(以秒为单位,从1970年1月1日开始计算):time_t t = time(NULL); 将 time_t 类型的时间转换为 tm 结构体:struct tm *tm = localtime(&t); 将 time_t 类型的时间转换为协调世界时(UTC)的 tm 结构体:struct tm *tm_utc = gmtime(&t); 格式化时间:char buffer[80];strftime(buffer, 80,...
C++ 标准库 <cstdlib>
C++ 标准库 是 C++ 标准库中的一个头文件,提供了各种通用工具函数,包括内存分配、进程控制、环境查询、排序和搜索、数学转换、伪随机数生成等。这些函数最初来自 C 标准库 <stdlib.h>,在 C++ 中进行了标准化和扩展。语法在 C++ 程序中,要使用 cstdlib 中的函数,需要先包含这个头文件:#include 常用函数cstdlib 中包含了许多有用的函数,以下是一些常用的函数及其简要说明: exit(int status): 终止程序执行,并返回一个状态码。system(const char* command): 执行一个命令行字符串。malloc(size_t size): 分配指定大小的内存。free(void* ptr): 释放之前分配的内存。atoi(const char* str): 将字符串转换为整数。atof(const char* str): 将字符串转换为浮点数。rand(): 生成一个随机数。srand(unsigned int seed): 设置随机数生成器的种子。 实例以下是一些使用 cstdlib 中函数的实例:实例...