可能有多种键类型的关联数组?

时间:2009-12-25 09:33:42

标签: c++ containers associative-array

5 个答案:

答案 0 :(得分:5)

boost :: multi_index是你问题的答案。有关如何使用它的更多信息,请参阅there

答案 1 :(得分:1)

以上是上述的另一种选择,您选择的解决方案取决于您的需求。 Grab SqlLite将有关对象的数据存储在数据库中并为它们运行查询。

答案 2 :(得分:1)

Fire Lancer,您没有正确限定Boost.MultiIndex名称,而不是例如boost::indexed_by您必须编写boost::multi_index::indexed_by等等。

答案 3 :(得分:0)

两张地图的方法(一张以ID为键,第二张以名称为键),对我来说似乎不错。它实现起来很简单,而且效果很好。

我看到其他答案建议加强库。如果你已经在项目中使用了boost,那么它可能是一个很好的解决方案。如果你不这样做 - 我不确定是否值得为这个简单的案例增加你的项目。

答案 4 :(得分:-1)

您可以将数据存储在std :: vector中,并使用std :: find算法查找您的项目。 find算法接受不同的比较器,因此只需定义一个匹配id的匹配器和另一个匹配名称的算法。

find算法比std :: map和std :: set的find方法慢,所以如果性能是一个很大的问题,那么你可能最好用交换空间来提高速度并使用2个地图或使用boost

编辑,只是想了想。使用id作为键将数据存储在地图中,因为这是常见的情况。然后使用std :: find算法和一个谓词匹配的谓词,用于不常见的情况。这应该减少(但不是删除)性能问题

相关问题