【发布时间】:2015-02-18 01:11:10
【问题描述】:
如果我有一组我希望能够按名称查找的对象,我当然可以使用 { string => object } 映射。
是否有理由使用对象的向量以及{ string => index into this vector }伴随地图?
多年来,我已经看到许多开发人员这样做,但我基本上认为这表明开发人员不熟悉地图,或者在其他方面感到困惑。但是最近几天,我开始怀疑自己,我担心我可能会错过潜在的优化或其他东西,尽管我一生都无法弄清楚可以优化什么。
【问题讨论】:
-
如果您首先拥有向量,或者想保持其顺序,则可以使用您描述的方案。它在概念上与带有索引的数据库文件的概念相匹配。
-
如果你需要一个对象向量,但也需要一个字符串->对象映射怎么办?它还允许您非常轻松地更改名称->对象映射,或者允许您将多个名称映射到同一个对象。
-
在垃圾收集的世界中,不让对象保持活动状态可能是安全的。将“索引”(字符串+索引)的存储与核心数据(对象)分开会很有用
标签: java c++ performance optimization data-structures