【发布时间】:2012-02-21 08:36:28
【问题描述】:
我有这样一张地图:
std::map<time_t, int>
每天 (time_t) 有一个值 (int)。有些日子可能具有相同的价值,因此可能不是唯一的。我需要为此映射中的每个唯一 int 值执行计算。
检索它们的最快(CPU 使用率最低)方法是什么?
【问题讨论】:
-
是否允许将
std::map更改为不同的数据结构? -
@LuchianGrigore,当然为什么不。只要我不丢失任何数据。
-
“最快”的答案会有所不同,具体取决于(除其他外)每次修改主
map需要多少次获取唯一整数。如果该数字很大,那么您应该为值维护一个集合(单独的multiset,单独的map<int, size_t>以保持计数,或者使用Boost.MultiIndex,并且在每种情况下都可以订购集合/映射或无序)。如果这个数字足够小,那么避免每次地图修改的开销会更快,并且每次需要它们时只需将值复制到新集合或 unordered_set 中。 -
@SteveJessop,感谢您提供有关性能的提示。对的数量相对较少
标签: c++ performance stdmap