【问题标题】:In C++, does a vector occupy successive memory slots? [duplicate]在 C++ 中,向量是否占用连续的内存槽? [复制]
【发布时间】:2017-03-08 00:29:21
【问题描述】:

如果我定义vector<double> v;,这个向量会占用连续的内存槽吗?如果它占用连续的内存槽,如果我在这个向量中添加一些新元素,而在最后一个元素之后没有足够的内存槽,会发生什么?

【问题讨论】:

  • 是的。如果元素不适合当前分配的空间,它将重新分配元素。
  • 这称为连续存储,有两个标准容器可以保证它:向量和数组。在 C++17 中,他们将添加一个具有此保证的迭代器:ContiguousIterator。
  • 这种存储允许您以 O(1) 复杂度(非常快)检索此类数据结构中的元素。
  • @Spidey 它也恰好是 C 兼容的(通过传递从 .data() 检索到的指针)

标签: c++ memory vector


【解决方案1】:

http://en.cppreference.com/w/cpp/container/vector

元素是连续存储的,这意味着不仅可以通过迭代器访问元素,还可以使用指向元素的常规指针的偏移量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 2021-09-14
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2021-04-05
    相关资源
    最近更新 更多