我需要一个容器(不一定是 STL 容器),它可以让我轻松地执行以下操作:

  • 在任意位置插入和移除元素
  • 通过索引访问元素
  • 以任意顺序迭代元素

  • 我使用了 std::list ,但它不会让我在任何位置插入(它确实如此,但为此我必须遍历所有元素,然后在我想要的位置插入,这很慢,因为名单可能很大)。那么你能推荐任何有效的解决方案吗?

    最佳答案

    我不太清楚“以任何顺序迭代元素”是什么意思 - 这是否意味着您不关心顺序,只要您可以迭代,或者您希望能够任意迭代定义的标准?这是非常不同的条件!

    假设您的意思是迭代顺序无关紧要,您会想到几种可能的容器:
    std::map [红黑树,通常]

  • 插入,删除和访问均为O(log(n))
  • 迭代按索引
  • 排序
    hash_mapstd::tr1::unordered_map [哈希表]
  • 插入、移除和访问都是(大约)O(1)
  • 迭代是“随机的”
  • 关于c++ - 哪个 STL 容器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1570349/

    10-11 22:47
    查看更多