gpt4 book ai didi

c++ - 使用 boost::tuple 来指示是否找到 T 是否好?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:16 26 4
gpt4 key购买 nike

假设我们需要一个返回值的函数。但是那个东西是找不到的。我看到选项:

1. T find(bool &ok); //return default T value if not found

我们可以创建一个结构体:

template <typename T>
class CheckableValue
{
public:
CheckableValue(),
_hasValue(false)
{

}
CheckableValue(const T &t):
_value(t),
_hasValue(true)
{

}

inline bool hasValue() const {return _hasValue}
const T &value() const
{
assert(hasValue());
return _value;
}

private:
T _value;
bool _hasValue;
};

并实现函数:

2. CheckableValue<T> find();

或者我们可以使用:

3.boost::tuple<bool, T> find()

你认为哪个更可取?

最佳答案

我更喜欢:

4. boost::optional<T> find();

元组的问题是当bool部分为false时,T部分无效;此行为不是由元组强制执行的。对于相同的问题,您的 CheckableValue 类与 boost::optional 的补救措施相同。

关于c++ - 使用 boost::tuple<bool, T> 来指示是否找到 T 是否好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com