optional

Posted on 2023-03-29 21:39  lyc2002  阅读(59)  评论(0编辑  收藏  举报

能解决什么问题?

需求:在给定数组中找目标值,返回目标值所在下标

方案一:返回 magic number,-1 表示给定数组不存在目标值,>= 0 表示目标值的下标

int find_target(int arr[], size_t sz, int tar);

方案二:返回 pair,bool 指示是否存在

pair<bool, size_t> find_target(int arr[], size_t sz, int tar);

使用 optional 的话:

  • 比起方案一,optional 更加可读,因为它显式表达意图

  • 比起方案二,optional 良好地处理构造开销高昂的对象

如何使用

std::optional - cppreference.com