![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++标准库
温晨星
这个作者很懒,什么都没留下…
展开
-
C++:常用预处理器宏
_cplusplus:表示 C++ 标准版本。例如,__cplusplus 的值为 201103L 表示 C++11 标准。:表示是否使用标准 C 库。如果定义了该宏,则表示正在使用标准 C 库。C++ 预处理器宏是预处理器指令,它们在编译之前处理源代码。格式为 Mmm dd yyyy,例如。,这通常用于生成日志记录,以帮助跟踪和调试代码。,生成文件名或日志记录,以帮助跟踪和调试代码。的值为 Oct 23 2023。: 表示当前源代码文件的文件名。:表示当前源代码文件的行号。: 表示当前函数的名称。原创 2024-02-02 11:19:55 · 343 阅读 · 0 评论 -
c++/c:随机生成器
在这个例子中,我们生成的是1到6之间的整数,模拟了一个六面骰子的结果。如果你只需要一个简单的随机数生成器,不需要遵循特定的分布,可以使用std::rand()函数,这是C++标准库中的一个较旧的函数。但是,请注意,std::rand()在质量和随机性方面通常不如库中的生成器。最常用的方法是使用库,这是C++11及其后续版本中引入的一个强大且灵活的随机数生成库。在这个示例中,我们使用std::time(nullptr)来获取当前时间,然后将其作为种子传递给std::srand()来初始化随机数生成器。原创 2024-02-01 21:31:55 · 399 阅读 · 0 评论 -
c++: std::transform()
其中,begin 和 end 指定要操作的元素范围,unary_op 是一个一元操作函数,binary_op 是一个二元操作函数。第二个版本的 std::transform 将 binary_op 应用于范围内的每对元素,并将结果存储到 result 容器中。第一个版本的 std::transform 将 unary_op 应用于范围内的每个元素,并将结果存储回原始范围。它接受两个迭代器范围(表示要操作的元素范围)和一个二元操作函数,并将该操作应用于范围内的每个元素。原创 2024-01-27 17:00:40 · 405 阅读 · 0 评论 -
c++: std::chrono()
std::chrono 提供了多种时间类型,包括时间点(std::chrono::time_point)、时间段(std::chrono::duration)和时钟(std::chrono::clock)等。此外,std::chrono 还提供了一些与时间相关的函数对象,例如 std::chrono::milliseconds()、std::chrono::seconds() 和 std::chrono::minutes() 等,这些函数对象可以用于表示时间间隔。原创 2024-01-27 16:55:19 · 551 阅读 · 0 评论 -
c++: std::this_thread()
在工作线程完成工作后,我们调用了 std::this_thread::yield() 函数,将执行机会让给主线程。在上面的示例中,我们首先使用 std::this_thread::get_id() 函数获取当前线程的 ID,并将其打印出来。然后,我们使用 std::this_thread::sleep_for() 函数让当前线程休眠 2 秒,最后输出 “Hello, World!需要注意的是,std::this_thread 命名空间中的函数都是非成员函数,即它们不依赖于任何类或对象实例,可以直接调用。原创 2024-01-27 16:47:12 · 418 阅读 · 0 评论 -
c++: std:bind()
std::bind() 是 C++11 标准库中的一个函数,用于创建一个可调用的对象,通常称为“绑定”。这个函数允许你绑定一个或多个函数的参数,以便在稍后的时间点调用它。例子2: 使用 std::placeholders:当你想绑定部分参数时,可以使用 std::placeholders::_N 来表示占位符。这些参数可以是任何可调用的对象,例如另一个函数、lambda 表达式或绑定对象。部分应用/偏应用:绑定函数的部分参数,创建一个新的函数。模拟高阶函数:将一个函数作为另一个函数的参数。原创 2024-01-27 16:38:12 · 717 阅读 · 0 评论 -
c++:std::placeholders()
在上面的示例中,我们使用 std::placeholders::_1 作为 std::bind 的第二个参数,表示第一个参数是未指定的。std::placeholders 是 C++ 标准库中的一个命名空间,它包含了一组特殊的占位符对象,用于与 std::bind 函数一起使用。通过在 std::bind 函数中使用这些占位符,你可以创建一个可调用的对象,该对象在调用时将使用后续提供的参数。std::placeholders::_1:表示第一个未指定的参数。原创 2024-01-27 16:34:17 · 1167 阅读 · 0 评论 -
c++: std::for_each()
注意,std::for_each 并不保证元素的迭代顺序,如果需要保持顺序,请使用其他算法如 std::for_loop 或 std::transform。在上面的示例中,我们使用 std::for_each 对 numbers 向量中的每个元素执行了一个 lambda 表达式,将每个元素加一。std::for_each 是 C++ 标准库中的一个算法,用于对容器中的每个元素执行指定的操作。除了对容器的每个元素执行操作外,std::for_each 还可以用于其他用途,例如在并行计算中。原创 2024-01-27 16:26:49 · 419 阅读 · 0 评论 -
c++:std::move()
在上述代码中,std::move(s) 将 s 的类型从 std::string 转换为 std::string&&。在输出时,可以看到 s 的内容已经被清空,而 rs 仍然持有原来的字符串内容。移动操作只是将对象的资源所有权从一个对象转移到另一个对象,而不涉及新的内存分配。因此,std::move不会创建新的空间。本身不直接开辟新空间,但它可以用于优化性能,特别是在处理资源密集型对象时,可以避免不必要的拷贝操作,提高性能,std::move 是一个类型转换器,用于将左值转换为右值引用。原创 2024-01-24 21:54:46 · 463 阅读 · 1 评论 -
c++:signal
在C++中,信号(signal)是一种处理异步事件的方式。当某个事件发生时,操作系统会向程序发送一个信号,以通知程序该事件已经发生。C++提供了信号处理函数,允许程序对收到的信号进行响应。信号在C++中的主要应用场景包括:中断处理:当用户按下Ctrl+C时,操作系统会向程序发送一个SIGINT信号,用于终止程序执行。程序可以捕获该信号并执行相应的处理逻辑,例如清理资源、保存数据等。原创 2024-01-24 19:09:27 · 1256 阅读 · 1 评论 -
c++:exit()
会立即终止程序,不会执行 main 函数的返回语句之后的任何代码。在上面的示例中,如果满足某个条件,程序会提前退出,不会打印 “Continuing the program…exit()函数会立即终止程序的执行,并返回给操作系统。在程序退出之前,它会执行一些清理操作,如关闭所有打开的文件和释放动态分配的内存。exit() 是一个函数,用于立即终止程序的执行,你可以传递其他整数值来表示不同的退出状态。通常,0 表示成功,而非零值表示某种错误。当参数是1时,程序会提前退出,并返回状态码1。原创 2024-01-24 18:52:51 · 1682 阅读 · 1 评论 -
C++预处理指令
C++预处理指令主要包括以下几种:#define:用于定义宏。#include:用于包含头文件。#if、#ifdef、#ifndef、#else、#elif、#endif:用于条件编译。#error:用于在编译时生成错误信息。#warning:用于在编译时生成警告信息。#line:用于改变预处理器中的行号和文件名。#pragma:用于提供与编译器相关的指令。这些预处理指令可以在C++源代码中以特定格式出现,以影响编译器的行为或生成特定的编译指令。原创 2024-01-24 17:24:24 · 1037 阅读 · 1 评论 -
c++标准库: std::once_flag
std::once_flag 是 C++11 标准库中的一个类,它用于确保某个函数或代码块只执行一次。简单地说,std::once_flag 是一个标志,当你用 std::call_once 函数和一个 std::once_flag 对象初始化时,它会确保某个函数或代码块只被执行一次。在这个例子中,尽管我们创建了两个线程并尝试多次调用 print_id 函数,但由于使用了 std::call_once 和 std::once_flag,该函数只会被执行一次。原创 2024-01-24 11:38:10 · 767 阅读 · 1 评论