我想知道unordered_map是否是我特定问题的容器的好选择。我读到的关于地图的内容并没有真正涵盖我的内容,即:
color==blue
)目前我使用矢量,这是有效的。但是,如果是unordered_map会提高性能(关于“过滤”)我可以想象改变它。
答案 0 :(得分:4)
std::unordered_map
,有时为color == blue
), flavour == up
将无法真正帮助您,因为地图仅提供单个快速查询,确定的关键。
我说std::vector
对你来说很合适,理想情况下包装在你自己的结构中,它将提供查找界面。如果后来的分析告诉您这不够快,您可以在这些数据之上构建自己的索引。您甚至不必手动执行此操作,boost::multi_index
是专为多标准查找而设计的通用容器。
答案 1 :(得分:1)
我会使用vector
或简单的数组来存储实际数据。并且有一些map
用映射键指向实际数据。
这会增加内存使用量,但如果经常需要使用不同的索引进行搜索,可能会牺牲一些内存。
答案 2 :(得分:1)
哈希表(std::unordered_map
是)为一个键(键值对)提供常量时间查找。然而,它的常数因子总是更高(即,查找更慢)而不是简单数组(它为整数索引提供恒定时间查找)。
如果您需要根据某些条件过滤元素集合,则需要检查每个元素。在这种情况下,哈希表比数组/向量性能严格严格,因为它的计算复杂度与数组索引相同,但具有更差的常数因子。
所以不,在这种情况下你没有理由想要使用unordered_map
。