
C++14新特性
文章平均质量分 60
介绍常用的C++14新特性
画个逗号给明天"
西电机械工程学硕研一在读,记录学习过程中的问题
展开
-
C++14新特性之shared_timed_mutex、shared_lock
shared_timed_mutex和shared_lock是C++14引入的用于多线程编程的工具,主要用于实现读写锁。它们可以帮助你在多线程环境中更加高效的管理共享资源的访问。下面将分别介绍。shared_timed_mutex提供了共享锁和独占锁的功能,适合读写锁场景。shared_lock是一个RAII风格的锁管理器,用于管理共享锁。(独占锁由unique_lock(C++11引入)管理)。读写锁机制可以有效提高多线程程序的性能,特别是在读多写少的情况下。原创 2025-02-19 10:39:52 · 415 阅读 · 0 评论 -
C++14新特性之make_unique
make_unique是C++14标准库引入的实用函数模版,位于<memory>头文件,主要用于创建并管理unique_ptr智能指针。std::unique_ptr<T>(...):将新创建的对象所有权交给unique_ptr<T>,确保在unique_ptr对象生命周期结束时,对象所占用的内存会被释放。std::unique_ptr<类型> (一般用auto代替) 指针名 = std::make_unique<类型>(参数值)主要用于创建unique_ptr智能指针。原创 2025-02-18 10:53:53 · 948 阅读 · 0 评论 -
C++14新特性之二进制字面量
二进制字面量的类型由编译器根据字面量的大小推断为 int ,unsigned int 、long等。在C++中,二进制字面量是从C++14标准引入的,二进制字面量允许直接以二进制形式表示整数,从而提高代码的可读性。当某些值的二进制形式比十进制或十六进制更直观时,使用二进制字面量可以提高代码可读性。二进制字面量是C++14引入的特性,确保编译器支持C++14或更高版本。二进制字面量以0b或0B开头,后跟一串二进制数字(0或1)。二进制字面量非常适合位操作、硬件寄存器操作等场景,可以提高代码的可读性。原创 2025-02-17 10:50:09 · 350 阅读 · 0 评论 -
C++14新特性之deprecated
(4)自定义警告信息:通过[ [deprecated(“message”)] ]提供自定义警告信息,帮助开发者理解迁移的原因。(2)编译器支持:[ [deprecated] ]是C++14引入的特性,需要编译器支持C++14或更高版本。(1)编译时警告:使用被标记为deprecated的功能时,编译器会生成警告信息。(3)替代方案:在标记[ [deprecated] ]时,应提供明确的替代方案。[ [deprecated] ]是 C++14 引入的特性,用于标记过时的功能。原创 2025-02-16 11:55:11 · 529 阅读 · 0 评论 -
C++14新特性之变量模版
变量模版是C++14引入的一个特性,允许定义模板化的变量。变量模板的主要用途是提供一种通用的方式来定义与类型相关的常量或全局变量。变量模版的初始值必须与模版参数类型兼容。这个例子中,counter是一个变量模版,可以根据模版参数生成不同类型的全局变量。变量模版的作用域与普通变量相同,可以是全局或局部作用域。变量模版可以像类模板和函数模版一样进行特化,以提供特定类型的实现。这个例子中,pi是个变量模版,根据模版参数生成不同类型的pi值。变量模板是 C++14 引入的特性,允许定义模板化的变量。原创 2025-02-14 10:15:35 · 552 阅读 · 0 评论 -
C++14新特性之lambda参数auto
C++14 中引入的泛型 Lambda(参数为auto)极大地增强了 Lambda 表达式的灵活性,使其可以处理多种类型的参数。泛型Lambda的实现基于模版,因此不同的参数都会生成对应的代码。如果传入的参数类型不一致,编译器会根据操作符的规则进行隐式转换(如果可以)。这使得lambda表达式更加的灵活,可以接收任意类型的参数,这一特性通常称为。上述代码中,print就是一个泛型Lambda,可以接收任意类型的参数打印。compare也是一个泛型Lambda,可以比较任意类型的参数。参数的类型为int。原创 2025-02-13 10:30:58 · 469 阅读 · 0 评论 -
C++14新特性之函数返回值类型推导
C++14引入的函数返回类型推导,使用了auto关键字,根据return语句自动推导函数返回类型,简化了代码编写,在函数返回类型复杂或依赖于模版时非常有用。(5)返回类型推导可以用在递归函数中,但递归调用必须以至少一个返回语句作为先导,以便编译器推导出返回类型。(1)函数内有多个return语句,返回值类型必须相同,否者编译失败。(4)返回类型推导可以用在前向声明中,但在使用前,必须得到函数定义。(3)如果函数为虚函数,不能使用返回值类型推导。(2)如果返回列表,类型推导也会报错。原创 2025-02-12 20:37:59 · 225 阅读 · 0 评论