我需要一个简单的API
int id = Put(value);
void Remove(id);
// and some kind of for_each that could iterate over all data ( there will be around ~1000 objects or less), and this is operation that will be calld super often compared to Put and Remove
很多关于std :: map如何缓慢的C ++混淆中有is extreamly批评。事实上,我并不需要任何成员。因此,在这种印象下,我寻找一种能够满足我的缩小需求的替代方案。
答案 0 :(得分:2)
主要归结为您需要/关心的特征。地图提供:
如果您不需要所有这些,那么使用其他容器可能会更好。如果你不关心顺序或唯一性,那么你可以创建一个int / pointer(或guid / pointer)对的向量,并根据需要添加新对。这支持快速迭代,但是使得查找单个项目相对较慢并且无法保持唯一性。如果您想在特定时间订购,可以使用sort来获得。同样,如果您想在特定时间使用唯一性,则可以使用sort后跟unique来获取它。当它被排序时,按键查找项目通常非常快(通常比使用map
更快)。
如果您关心唯一性但在迭代它们时不需要按顺序排列项目,则可能需要考虑使用unordered_map。像地图一样,这仍然可以让您快速找到单个项目,但迭代不会以有意义的顺序发生。与排序向量一样,按键查找单个项目通常比使用map
更快。