首页 > 解决方案 > std::vector::data() 重新分配安全吗?

问题描述

据我所知,获取std::vector元素的指针或引用被认为是不好的做法。但是呢std::vector::data()?重新分配后指针是否data()仍然有效?

标签: c++pointersstdvector

解决方案


据我所知,将指针或对 std::vector 元素的引用视为不好的做法。

引用和指针可以避免复制开销,如果您可以确保std::vector在引用或指针生命周期内不会重新分配,这不是一个坏习惯。

(顺便说一句,在 C++ 中,可以使用引用时不需要使用指针)

但是 std::vector::data() 呢?data() 获取的指针在重新分配后是否仍然有效?

不会。重新分配可能会导致指针发生变化。在重新分配后使用旧指针是一种未定义的行为。迭代器也一样。


推荐阅读