c++ - 哪个STL容器?

标签 c++ list stl containers

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

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

我使用了 std::list,但它不允许我在任何位置插入(它允许,但为此我必须遍历所有元素,然后在该位置插入我想要,这很慢,因为列表可能很大)。那么您能推荐任何有效的解决方案吗?

最佳答案

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

假设您的意思是迭代顺序无关紧要,那么您会想到几种可能的容器:

std::map [通常是红黑树]

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

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

  • 插入、删除和访问都是(大约)O(1)
  • 迭代是“随机的”

关于c++ - 哪个STL容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1570349/

相关文章:

c++ - boost 多阵列作为类成员未填充

c++ - 在类和 cpp 核心指南中初始化优先级变量?

python - 从 q 个元素的列表中创建所有长度为 "n"的列表

c++ - 使用堆上的成员初始化类内的类

c# - 如何将列表复制到数组

python - 对保存列表的变量使用算术运算符

C++ 类似 STL 的双向 multimap

c++ - 列表迭代器不可递增 - 运行时错误

C++ 在映射错误 : cannot bind 'int' lvalue to 'int&&' 中搜索元组

c++ - 精神X3 : Basic example for compound components does not compile