你有没有在实际工作中使用过boost :: tribool?

时间:2009-08-13 03:38:33

标签: c++ boost

作为Boost最奇怪的角落之一,tribool让我感到震惊。与使用枚举相比,我看到它有一些便利,但枚举也可以轻松扩展,代表超过3种状态。

你用现实世界的方式使用tribool吗?

6 个答案:

答案 0 :(得分:18)

虽然我没有使用C ++,因此我已经在网络应用程序中广泛使用了三态变量,我需要将状态存储为true / false / pending。

答案 1 :(得分:15)

任何值类型的额外状态都非常有价值。它避免使用“幻数”或额外标志来确定变量的值是“可能”还是“未知”。

而不是truefalsetribool的状态为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).

非常有用。

答案 2 :(得分:9)

我认为额外的好处不仅仅是第3个值,而且还可以轻松使用3值逻辑!

例如:

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

SQL实现了这样的逻辑。

答案 3 :(得分:5)

我已经看过很多例子,两个布尔值用于表示三种可能的状态,明确地或其他地方,第四种状态被默默地认为是不可能的。至少在两种情况下,我已经改变了这样的结构,因为我们开始使用boost。

答案 4 :(得分:3)

我是Boost图书馆的忠实粉丝,并开始在我离开的公司使用它。在我们的整个项目中广泛接触和使用升级库之后,我偶然发现了tribool并考虑使用一些需要改进的“模糊逻辑”算法。

在我有机会进入之前我离开了,但是除了“模糊逻辑”示例之外,系统中的其他模块都有这种状态的组件,现在考虑到,我可能会最终使用tribool如果我还在公司工作,那么代码量不错。

-bn

答案 5 :(得分:1)

我认为它对语言成型非常有用,例如OCR应用程序和语音合成,因为你知道人类语言含糊不清并且它们有很多中级状态

寻找使用tribool来改进当前技术的前言