C++ Qt是否有自己的boost::可选方案?
Qt是否有自己的boost::optional替代品,或者我应该只使用boost::optional吗?在Qt的QVariant容器上实现了它,但它不在“标准”Qt库中。Qt有“variant”类型,但不是“optional”类型。我认为<>代码>::可选的(或者,在新的C++版本中,<代码> STD::可选< /COD>)是一个合理的选择。 < P>强> NO>强:没有可供选择的Boo::您也可以参考此线程:似乎C++ Qt是否有自己的boost::可选方案?,c++,qt,boost,C++,Qt,Boost,Qt是否有自己的boost::optional替代品,或者我应该只使用boost::optional吗?在Qt的QVariant容器上实现了它,但它不在“标准”Qt库中。Qt有“variant”类型,但不是“optional”类型。我认为代码>::可选的(或者,在新的C++版本中, STD::可选< /COD>)是一个合理的选择。 < P>强> NO>强:没有可供选择的Boo::您也可以参考此线程:似乎QVariant已经可以完成boost::optional打算做的事情。你有: bool QV
QVariant
已经可以完成boost::optional
打算做的事情。你有:
bool QVariant::isNull() const
bool QVariant::isValid() const
Type QVariant::type()
static QVariant QVariant::fromValue(const T & value)
T QVariant::value()
因此,您可以包装任何类型,检查变量是否为null或有效,甚至可以获取用于if或switch语句的类型。在C++17中引入了std::optional:
我认为它在Qt项目中比boost项目更有用。Qt中仍然没有任何QOptional类。当然,但QVariant是一种过度使用。它有更多的开销,并且隐藏了内容的类型。如果已经使用Qt,那么它是一个可行的选择,我怀疑它最终会被用于内存或性能开销会加剧的地方。QVariant不适合optionals的使用情况。从QVariant的docos:空变量不是单一状态,如果两个空变量不包含类似的空值,则它们在==运算符上很容易返回false。