快速c++简化map字典一样的集合

Fast C++ simplified mapdictionary like collection?

本文关键字:一样 集合 c++ 简化 map 字典 快速      更新时间:2023-10-16

我需要一个简单的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

在很多c++会议上都有很多关于std::map是如何慢的批评。实际上我并不需要它的所有成员。因此,在这种印象下,我寻找一个可以满足我最小需求的替代方案。

这主要取决于你需要/关心什么特性。map提供:

    <
  1. 独特的键/gh>
  2. 键快速查找
  3. 按键顺序迭代
  4. 任意项的插入/删除
  5. 顺序始终保持

如果你不需要所有这些,你可能会更好地使用其他容器。如果您不关心顺序或唯一性,那么您可以创建int/pointer(或guid/pointer)对的vector,并根据需要添加新的对。这支持快速迭代,但使得查找单个项目相对较慢,并且无法保持唯一性。如果你想在特定时间排序,你可以用排序来实现。同样地,如果您希望在特定时间内保持唯一性,您可以使用sort + unique来实现。当它被排序时,按键查找项通常相当快(通常比map快)。

如果您关心惟一性,但在迭代时不需要按顺序排列项,则可能需要考虑使用unordered_map。与地图一样,这仍然可以让你快速找到单个道具,但迭代不会以有意义的顺序发生。与排序向量一样,按键查找单个项通常比使用map更快。