c++ 你在真实的工作中使用过boost::tribool吗?

8ulbf1ek  于 2022-12-05  发布在  其他
关注(0)|答案(6)|浏览(151)

tribool给我的印象是Boost最奇怪的地方之一。我看到它与使用枚举相比有一些便利,但枚举也可以很容易地扩展代表3个以上的状态。
在真实的世界中,你以什么方式使用tribool?

xoefb8l8

xoefb8l81#

虽然我没有使用过C++,因此也没有使用过boost,但我在一个需要将状态存储为true/false/pending的网络应用程序中相当广泛地使用了三状态变量。

mpgws1up

mpgws1up2#

任何值类型中的额外状态都可能是极其有价值的,它避免了使用“幻数”或额外的标志来确定变量的值是“可能”还是“未知”。
tribool的状态不是truefalse,而是truefalseindeterminate
假设您有一个包含customers及其dateOfBirth列表的数据库,那么您可以编写一个沿着所示的函数:

tribool IsCustomerAdult(customerName);

函数返回:

`true` if the customer is 18 or older;
`false` if the customer is less than 18;
`indeterminate` if the customer is not in the database 
     (or the dateOfBirth value is not present).

非常有用。

hc8w905p

hc8w905p3#

我认为额外的好处不仅是第三值,而且你可以很容易地使用3值逻辑!
例如:

(true && indeterminate) == indeterminate
(true || indeterminate) == true

SQL实现这样的逻辑。

yrwegjxp

yrwegjxp4#

我见过很多这样的例子:两个布尔值被用来表示三种可能的状态,无论是明确的还是不明确的,而第四种状态被默认为不可能。

az31mfrm

az31mfrm5#

我是Boost库的忠实粉丝,并开始在我离开的公司使用它。在整个项目中广泛接触和使用Boost库后,我偶然发现了tribool,并正在考虑使用一些需要改进的“模糊逻辑”算法。
在我有机会进入它之前,我离开了,但是除了“模糊逻辑”的例子,系统中的其他模块也有这种状态之间的组件,考虑到现在,如果我还在公司的话,我可能会在相当数量的代码中使用tribool。

  • 十亿
fjaof16o

fjaof16o6#

我认为它对于语言建模非常有用,例如OCR应用和语音合成,因为正如你所知道的,人类语言是模糊的,它们有很多中间状态
展望利用摩擦学改进现有技术

相关问题