代码之家  ›  专栏  ›  技术社区  ›  rubenvb

使用自定义迭代器设置vs vector

  •  1
  • rubenvb  · 技术社区  · 14 年前

    我知道这个问题可能会很快被标记为许多其他更受欢迎的问题的副本,但我仍然会问:

    我需要一个容器,在插入时提供重复检查(如 std::set ,但允许我修改已经存在的元素(例如 std::vector ). 它还应该相对快速地搜索元素(它更喜欢 标准::集 再次)。最好使用一个向量或者一个自定义的重复检查insert_迭代器,而不是通过删除和重新插入来修改set元素?

    谢谢

    3 回复  |  直到 14 年前
        1
  •  3
  •   Matt K    14 年前

    是什么阻止你使用 std::set

        2
  •  1
  •   prolink007    14 年前

    你研究过用地图吗?

    Reference

    地图可能是解决你问题的好办法。

        3
  •  0
  •   Alan    14 年前

    vector<string> set<string *> . 为集合提供自定义比较器,以便它通过指针取消引用以进行比较。若要修改元素,请从集合中移除指针,修改字符串,然后重新插入指针。

    当您想要删除容器元素时,这会变得有点混乱,所以您需要使用某种形式的延迟删除。在那一点上,你非常接近一个完整的自由对象池为你的字符串。

    当c++0x移动语义广泛可用时,情况会好得多。