所以我刚才正在阅读上面的内容,我注意到以下引用:
元素的迭代器和地址稳定性通过
仅当不发生重新分配时才能保证std::vector
所以假设我有一个泛型类型
std::vector<>
的 T*
成员(T
代表任何东西)。该成员本身是指向 std::vector<>
中第一个元素的指针,因为堆分配的缓冲区在内存中是连续的,并且迭代器仅针对 sizeof(T)
中每个元素的指针移动 std::vector<>
字节。
在泛型类型
std::vector<>
的 T*
中,每个元素的指针只是一个指向指针的指针,至少根据我的理解。 但是,这意味着上述地址稳定性仅适用于元素指针,而不适用于元素指针,对吧?
是的,没错。向量指向的项目不必更改,因此您的其他资源可以安全地依赖这些值。不过,向量指针的内存位置将会改变,因为这就是重新分配的作用。