What does std::vector look like in memory?
所以我刚才正在阅读上面的内容,我注意到了以下引用:
使用保证了元素的迭代器和地址稳定性 std::vector 只有 不进行重新分配
std::vector
所以假设我有一个 std::vector<> 泛型类型的成员 T* ( T 代表任何事物)。成员本身是指向中第一个元素的指针 std::矢量<> 由于堆分配的缓冲区在内存中是连续的,并且迭代器只移动 sizeof(T) 中每个元素的指针的字节 std::矢量<> .
std::vector<>
T*
T
std::矢量<>
sizeof(T)
在 std::矢量<> 泛型类型 T ,至少在我看来,每个元素的指针都只是指向一个指针的指针。 尽管如此,这意味着上述地址稳定性只适用于元素指针,而不适用于元素处的指针,对吧?
是的,这是正确的。矢量指向的项不必更改,因此您的其他资源可以安全地依赖这些值。不过,向量指针的内存位置会发生变化,因为这就是重新分配的作用。