C++ class 具有可选属性

C++ class with selectable properties

我正在编写一个图形库,例如,我有一个特殊的 class 用于 Edge。 class 除了源 (Vertex) 和目标 (Vertex) 之外还有一些属性,例如权重 (double)、可靠性 (double)、延迟 (double)、存在 (double) 等

然而,我并不总是需要使用所有这些属性,我想通过不必指定它们来节省内存。有没有什么标准的方法可以实现这一目标,而不是定义一个具有核心属性的基础 class,然后定义 child classes 是否具有这些属性?我问是因为我不想根据我在任何给定时间需要的属性,有成倍增加的 child classes。

如果属性只有几个(比如少于 20 个),您最好将它们包含在 class 中,并在它们不存在时将它们设置为 NAN。无论如何,每个 属性 只有 8 个字节。

如果您有很多属性,但大多数对象只有几个,您可以将它们存储在 map<Property, double> 中,其中 Property 是所有可能属性的枚举。如果您非常关心紧凑存储,最好将它们存储在 array<pair<Property, double>, N> 中,假设您有一些最大数量的属性 (N)。