Mar*_*kus 1 c++ data-structures
我正在处理的数据项基本上可以具有三种状态:
我目前正在使用 a 来实现它来std::optional区分不存在和存在,并且我使用一个特殊值来表示空。
我一直在考虑使用 eg std::optional<std::optional<int>>,但在走这条路之前:是否有一些普遍同意的可用数据类型能够更好地传达概念信息?
更新:
添加更多上下文来说明我为什么要这样做:我正在处理具有某些可选数据字段的外部消息,并且每个数据字段都有一个特定的保留值(表示空),以及一组受限制的允许值。在处理链的更下游,我需要能够区分每个项目的三种不同状态,因为每种情况下都应该发生不同的操作。
更新2:
例如,该值可以是能够表示空的值(例如std::string),或者是没有空概念的数字。
std::optional<std::optional<int>>应该给你你想要的东西,但在语法上可能很难使用。
例如,您可以将 astd::variant与自定义类型一起使用。
namespace my {
struct missing{};
struct empty{};
template <typename T>
using data = std::variant<missing, empty, T>;
}
Run Code Online (Sandbox Code Playgroud)
或者您可以编写一个按您需要运行的自定义数据类。