C++17 共 12 篇文章

C++ std::filesystem遍历目录与文件操作的跨平台方案
2026-05-19 09:23:28
C++ std::filesystem遍历目录与文件操作的跨平台方案 在C++17之前,处理文件路径、遍历目录或进行跨平台文件操作往往需要依赖操作系统特定的API或第三方库。C++17引入的 std::filesystem 库彻底改变了这一局面,它提供了一个标准化、跨平台(Windows、Linux
C++17 std::filesystem 跨平台
46 0
C++ std::optional的比较操作符与std::nullopt的比较
2026-05-06 09:14:05
C++ std::optional的比较操作符与std::nullopt的比较 C++17 引入了 std::optional,用于处理可能不存在的值。理解其比较操作符的行为,特别是与 std::nullopt 的交互,是写出健壮代码的关键。 1. 理解核心比较逻辑 std::optional 的比
C++ C++17 optional类型
32 0
C++ std::scoped_lock同时锁定多个互斥量避免死锁
2026-05-04 14:29:00
C++ std::scopedlock同时锁定多个互斥量避免死锁 在多线程编程中,当需要同时操作多个共享资源时,如果锁的顺序不一致,极易发生死锁。死锁会导致程序挂起,无法继续执行。C++17 引入了 std::scopedlock,这是一个专门为了解决多锁死锁问题而设计的工具。它不仅能一次性锁定多个
C++编程 多线程 死锁
39 0
C++ std::visit结合std::variant的多态访问模式
2026-05-04 13:22:09
C++ std::visit结合std::variant的多态访问模式 在现代 C++(C++17 及以上)开发中,std::variant 提供了一种类型安全的联合体,而 std::visit 则是访问这个联合体中数据的钥匙。这种组合被称为“静态多态”,它相比传统的基于继承和虚函数的“动态多态”,
C++ C++17 variant
41 0
C++ std::variant的valueless_by_exception状态处理
2026-05-03 04:17:09
C++ std::variant的valuelessbyexception状态处理 std::variant 是 C++17 引入的类型安全联合体。它通常用来存储多种类型中的任意一种,但在极少数异常情况下,它会进入一个特殊的“无效”状态,即 valuelessbyexception。如果不处理这种状
C++编程 std::variant 异常处理
44 0
C++ std::string_view为什么比string更适合做函数参数
2026-05-02 13:23:23
C++ std::stringview为什么比string更适合做函数参数 在C++开发中,处理文本数据是一项极其频繁的任务。许多开发者在编写函数接收字符串参数时,习惯性地使用 std::string 或 const std::string&。然而,自C++17引入 std::stringview
C++编程 性能优化 字符串处理
47 0
C++ std::variant的std::get_if安全访问与异常版本对比
2026-04-30 20:13:49
C++ std::variant的std::getif安全访问与异常版本对比 std::variant 是 C++17 引入的类型安全的联合体,它能在同一时刻存储多种类型中的一种。在实际开发中,我们经常需要将存储的值提取出来。C++ 标准库主要提供了两种方式:std::get(基于异常)和 std:
C++ C++17 variant
58 0
C++ std::optional::value_or与value的异常抛出行为
2026-04-27 20:20:56
C++ std::optional::valueor与value的异常抛出行为 在 C++17 引入 std::optional 后,处理可能不存在的值变得更加安全。然而,不当使用获取值的方法会导致程序崩溃或逻辑错误。本文直接对比 value 和 valueor 的核心区别,并演示如何在不同的代码场
C++ C++17 标准库
53 0
C++ std::variant的std::monostate作为默认无值状态
2026-04-26 05:14:59
C++ std::variant的std::monostate作为默认无值状态 C++17 引入了 std::variant,作为类型安全的 union 替代品。然而,与可以指向 nullptr 的指针或具有 std::nullopt 的 std::optional 不同,std::variant
C++ C++17 stdvariant
57 0
C++ std::variant的std::visit访问者模式实现
2026-04-23 15:17:30
C++ std::variant的std::visit访问者模式实现 std::variant是C++17引入的类型安全联合类型替代方案,它允许在同一个对象中存储不同类型的数据。访问者模式是一种设计模式,允许在不修改原有类结构的情况下添加新操作。将std::variant与std::visit结合使
C++17 std::variant 访问者模式
45 0
C++ std::variant的std::holds_alternative类型检查
2026-04-19 08:19:00
std::variant 是 C++17 标准库中提供的一个类型安全的联合体容器,它能在同一时刻存储多种指定类型中的某一种。在使用该容器时,经常需要判断当前存储的具体数据类型,std::holdsalternative 就是专门用于执行此操作的函数。 1. 引入 必要的头文件 在使用前,确保 代码文
C++ C++17 variant
49 0
C++ 标准库:不同标准版本的兼容性
2026-04-03 10:21:14
C++ 标准库:不同标准版本的兼容性 C++ 语言自诞生以来经历了多次标准化更新,每次新标准(如 C++11、C++14、C++17、C++20 等)都引入了新特性、改进或废弃旧功能。这些变化直接影响标准库的行为和接口。如果你在多个项目中使用不同编译器或需支持旧系统,理解各标准版本间的兼容性至关重要
C++标准库 版本兼容性 C++11
76 0