首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比map<string,map<string,vector>更好的东西

比map<string,map<string,vector>更好的东西
EN

Stack Overflow用户
提问于 2014-02-19 12:41:30
回答 1查看 99关注 0票数 0

我不知道,这是否是发表这个问题的合适地点。如果不是,请告诉我。

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

要做到这一点,我可能应该使用一个map<string, entity>来存储每个实体的名称。

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

考虑到这一点,map<string, entity>现在变成:map<string, map<string, vector>

以前是一个简单而优雅的解决方案,现在已经变得很难阅读,使用起来也很尴尬。

  • 为了漂亮的代码,将map<string, vector>封装为一个实体类似乎太过分了(因为我没有任何程序可以放在类中)。
  • 我会更好地使用实体作为一个结构来“美化”代码吗?
  • 还是有一个更简单或更优雅的解决方案,我错过了?
  • 或者说,这是我所希望的最好的实现?

注意:我正在处理一个相当大的数据集。地图上将有1500-2000个实体。每个实体都有4-10个属性。每个属性的值将接近10000。性能是一个制约因素。

EN

回答 1

Stack Overflow用户

发布于 2014-02-19 12:49:54

无论如何,我将建议一个Entity类或结构。原因是您的实现可能会随着时间的推移而改变(例如,从map<string, vector<T>>multimap<string, T>,或者可能是unordered_map),并且给实体一个实际的API允许您封装这些更改,并在其他代码处理实体的方式上施加约束。它还将使代码和可能的编译器错误消息更易于阅读。

如果将类/结构实现完全放在头中而不使用virtual方法,那么性能就不会受到影响。用Stroustrup的话来说,C++是一种“轻量级抽象语言”,可以被解析为“轻量级抽象语言”,这是轻量级抽象似乎合适的地方。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21880797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档