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

C++:向量与列表之间的混合:STD::绳子?

  •  6
  • Albert  · 技术社区  · 15 年前

    std::list

    std::vector 不好是因为:

    • 它必须重新分配,如果它不适合了。
    • 对于大量的数据来说,它实际上不起作用(因为你不可能总是获得非常大的连续可用内存块)。

    标准::列表 不好是因为:

    所以,介于两者之间的东西才是我想要的。

    std::list< boost::array<T, 100> > 差不多吧。或者代替 100 4096/sizeof(T) . 也许还可以 std::list< std::vector<T> > mycontainer.push_back(x)

    std::rope 有点类似,但在标准中不可用。

    2 回复  |  直到 14 年前
        1
  •  10
  •   James McNellis    15 年前

    你考虑过使用 std::deque ? 它的元素不是连续存储的,但允许对元素进行随机访问;如果只在序列的开头或结尾插入元素,则它可能比 std::vector .

        2
  •  1
  •   Yakov Galka    15 年前

    是的,它叫std::vector。现在是O(1)时间,它几乎总是比std::list快。(是的,而且内存效率也很高)

    std::list最重要的特性是从中间执行常量时间删除/插入。如果您不需要它,请选择std::vector。

    推荐文章