如果我错了,请纠正我,但 std::map 是一种有序的映射容器,因此每次插入一个值,map 都会使用一种算法来内部排序其项,这需要一些时间。
我的应用程序以恒定的间隔获取有关某些项目的信息。
这个应用程序保留一个定义如下的映射:
::std::map<DWORD, myItem*>
一开始所有的物品都被应用程序视为“新”的。一个“Item”对象被分配并添加到这个map中,将它的id和指向它的指针关联起来。
当它不是一个“新”的物品(只是对此对象的更新)时,我的应用程序应该在map中使用给定的id查找对象并进行更新。
大多数情况下我会得到更新。
我的问题是:
是否有任何更快的map实现,或者我应该继续使用这个?
我最好使用unordered_map吗?
unordered_map
更加合适。只有在顺序很重要的情况下才应该使用map
。不幸的是,unordered_map
被引入得太晚了。但像@Neil所说,我也通过unordered_map
获得了极大的性能提升,因为我只进行查找并且不关心顺序。但是,在进行大量插入和删除操作时,map
往往会胜出。 - GManNickG