我处理的数据项基本上可以有三种状态:
1.不存在
1.存在且空
1.存在且不为空(有效值)
我目前正在用std::optional
来实现它,以区分不存在和存在,并且我使用一个特殊值来表示空。
我一直在考虑使用std::optional<std::optional<int>>
,但在此之前:是否有一些公认的可用数据类型能够更好地传达概念信息?
更新:
要添加更多关于 * 为什么 * 我想这样做的上下文:我处理的外部消息有一些可选的数据字段,每个数据字段都有一个特定的保留值(表示 empty),加上一组有限的允许值。在处理链的下游,我需要能够区分每个项目的三种不同状态,因为在每种情况下应该发生不同的操作。
更新2:
该值例如可以是能够表示 * 空 * 的值(例如像std::string
),或者是没有空概念的数字。
1条答案
按热度按时间mm5n2pyu1#
std::optional<std::optional<int>>
应该可以给予您所需要的,但可能在语法上难以使用。例如,您可以使用带有自定义类型的
std::variant
。或者,您可以编写一个自定义数据类,使其按照您需要的方式工作。