哪个STL容器?

aki*_*kif 3 c++ containers stl list

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

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

我使用了std :: list,但它不会让我插入任何位置(确实如此,但为此我必须迭代所有元素然后插入我想要的位置,这很慢,作为列表可能很大).你能推荐任何有效的解决方案吗?

Jac*_*oyd 7

我并不完全清楚你的意思是"以任何顺序迭代元素" - 这是否意味着你不关心顺序,只要你可以迭代,或者你想要能够任意迭代定义标准?这些是非常不同的条件!

假设您的意思是迭代顺序并不重要,可以想到几个可能的容器:

std::map [一棵红黑树,通常]

  • 插入,删除和访问是O(log(n))
  • 迭代按索引排序

hash_mapstd::tr1::unordered_map[哈希表]

  • 插入,移除和访问都是(大约)O(1)
  • 迭代是"随机的"