[c++17标准库特性之新增STL特性] --- std::optional

1 std::optional介绍

std::optional 是 C++17 中引入的一个标准库类型,它表示一个值或者不存在的情况。它类似于指针,但它可以安全地表示空值,同时还提供了更多的功能和语法糖。

std::optional 的使用方式很简单,它可以用来表示函数的返回值、类成员变量、容器元素、函数参数等。当需要表示一个值可能不存在时,可以使用 std::optional 来避免使用指针和裸值时可能遇到的问题。

以下是 std::optional 的一些主要特点和用法:

std::optional 可以存储任何可拷贝的类型,包括基本类型、自定义类型和标准库类型。
std::optional 有一个默认构造函数,它创建一个空值。可以使用 std::nullopt 或者 std::optional() 来表示空值。
可以使用 std::optional 的成员函数 has_value() 来检查该对象是否包含值。
可以使用 * 运算符解引用一个 std::optional 对象来获取其值。在空值情况下,解引用会引发未定义行为,因此应该在使用值之前检查其是否存在。
可以使用 -> 运算符来调用包含在 std::optional 对象中的成员函数。在空值情况下,访问成员函数会引发未定义行为,因此应该在使用函数之前检查其是否存在。
可以使用 std::optional 的 value_or() 成员函数来获取值,如果对象为空,则返回一个默认值。
可以使用 std::optional 的 reset() 成员函数将其设置为空值。
可以使用 std::optional 的 emplace() 和 emplace_hint() 成员函数来在空的 std::optional 对象中构造一个新值,避免了构造临时对象并将其分配给 std::op

猜你喜欢

转载自blog.csdn.net/weixin_42445727/article/details/130041204