gpt4 book ai didi

c++ - 比 map 更好的东西

转载 作者:行者123 更新时间:2023-11-28 02:56:22 28 4
gpt4 key购买 nike

我不确定这里是否适合发布此问题。如果不是,请告诉我。

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

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

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

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

以前简单而优雅的解决方案变得难以阅读且难以使用。

  • 封装map<string, vector>作为一个实体类似乎为了漂亮的代码而走得太远(因为我没有任何程序可以放在类中)。

  • 将实体用作“美化”代码的结构会更好吗?

  • 或者是否有我缺少的更简单或更优雅的解决方案?

  • 或者说这个实现是我所希望的最好的吗?

注意:我正在处理一个相当大的数据集。 map 中将有 1500-2000 个实体。每个实体将具有 4-10 个属性。每个属性将有接近 10000 个值。性能是一个约束。

最佳答案

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

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

关于c++ - 比 map<string, map<string, vector> 更好的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com