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

问题描述 投票:0回答:1

std::vector 在内存中是什么样的?

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

元素的迭代器和地址稳定性通过

std::vector
仅当不发生重新分配时才能保证

所以假设我有一个泛型类型

std::vector<>
T*
成员(
T
代表任何东西)。该成员本身是指向
std::vector<>
中第一个元素的指针,因为堆分配的缓冲区在内存中是连续的,并且迭代器仅针对
sizeof(T)
中每个元素的指针移动
std::vector<>
字节。

在泛型类型

std::vector<>
T*
中,每个元素的指针只是一个指向指针的指针,至少根据我的理解。 但是,这意味着上述地址稳定性仅适用于元素指针,而不适用于元素指针,对吧?

c++ vector memory-management std
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.