C++ 比地图更好的东西<;字符串,map<;字符串,向量>;

C++ 比地图更好的东西<;字符串,map<;字符串,向量>;,c++,vector,map,C++,Vector,Map,我不确定,这是否是发布此问题的正确位置。如果不是,请告诉我 我有很多“实体”。每个实体都有许多属性(所有实体都有相同数量的属性),这些属性本身存储为数组(长度相同)。我希望以这种方式存储“实体”,以便可以按名称获取每个实体 为此,我可能应该使用映射按名称存储每个实体 现在的问题是,在这个需求(存储多个实体)出现之前,我曾经将一个实体存储为map,其中每个向量都是一个属性,字符串表示属性名称 考虑到这一点,地图现在变成: map无论如何,我要推荐一个实体类或结构。原因是您的实现可能会随着时间的推移

我不确定,这是否是发布此问题的正确位置。如果不是,请告诉我

我有很多“实体”。每个实体都有许多属性(所有实体都有相同数量的属性),这些属性本身存储为数组(长度相同)。我希望以这种方式存储“实体”,以便可以按名称获取每个实体

为此,我可能应该使用
映射
按名称存储每个实体

现在的问题是,在这个需求(存储多个实体)出现之前,我曾经将一个实体存储为
map
,其中每个向量都是一个属性,字符串表示属性名称

考虑到这一点,地图现在变成:
map无论如何,我要推荐一个
实体
类或结构。原因是您的实现可能会随着时间的推移而改变(例如,从
map
multimap
,或者可能是
无序的\u map
),给实体一个实际的API允许您封装这些更改,并对其他代码处理实体的方式施加约束。它还将使代码和可能的编译器错误消息更易于阅读


如果您将类/结构实现完全放在一个头中,并且不使用
virtual
方法,那么性能应该不会受到影响。在Stroustrup的话中,C++是一种“轻量级抽象语言”,被解析为“轻量级抽象语言”,这是一个轻量级抽象的合适之处。map@ST3multimap是一种允许针对单个键存储多个值的映射。对吗?在这种情况下,多重映射有何帮助?是的,这似乎是一个干净的方法,除非您完全确定实体可用或使用的属性将来不需要更改或扩展,否则您的设计应该保留一个属性选择器(字符串或枚举),以便您可以添加新的属性选择器(删除其他项)(&删除其他项)。