代码之家  ›  专栏  ›  技术社区  ›  Spring E. Thing

C++-从std::vector<T*>返回元素的指针稳定性?

  •  0
  • Spring E. Thing  · 技术社区  · 1 年前

    What does std::vector look like in memory?

    所以我刚才正在阅读上面的内容,我注意到了以下引用:

    使用保证了元素的迭代器和地址稳定性 std::vector 只有 不进行重新分配

    所以假设我有一个 std::vector<> 泛型类型的成员 T* ( T 代表任何事物)。成员本身是指向中第一个元素的指针 std::矢量<> 由于堆分配的缓冲区在内存中是连续的,并且迭代器只移动 sizeof(T) 中每个元素的指针的字节 std::矢量<> .

    std::矢量<> 泛型类型 T ,至少在我看来,每个元素的指针都只是指向一个指针的指针。 尽管如此,这意味着上述地址稳定性只适用于元素指针,而不适用于元素处的指针,对吧?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Lajos Arpad    1 年前

    是的,这是正确的。矢量指向的项不必更改,因此您的其他资源可以安全地依赖这些值。不过,向量指针的内存位置会发生变化,因为这就是重新分配的作用。