std::vector::data() 重新分配安全吗?
Is std::vector::data() reallocation-safe?
据我所知,使用指针或引用 std::vector
元素被认为是不好的做法。但是 std::vector::data()
呢? data()
占用的指针在重新分配后是否仍然有效?
As far as I know, taking a pointer or reference to std::vector element considered as bad practice.
引用和指针可以避免复制开销,如果您可以确保 std::vector
在引用或指针的生命周期内不会被重新分配,这不是一个坏习惯。
(顺便说一句,在C++中,可以使用引用的时候不需要使用指针)
But what about std::vector::data()? Does the pointer taken by data() remain valid after reallocation?
没有。重新分配可能会导致指针发生变化。在重新分配后使用旧指针是未定义的行为。迭代器也一样。
据我所知,使用指针或引用 std::vector
元素被认为是不好的做法。但是 std::vector::data()
呢? data()
占用的指针在重新分配后是否仍然有效?
As far as I know, taking a pointer or reference to std::vector element considered as bad practice.
引用和指针可以避免复制开销,如果您可以确保 std::vector
在引用或指针的生命周期内不会被重新分配,这不是一个坏习惯。
(顺便说一句,在C++中,可以使用引用的时候不需要使用指针)
But what about std::vector::data()? Does the pointer taken by data() remain valid after reallocation?
没有。重新分配可能会导致指针发生变化。在重新分配后使用旧指针是未定义的行为。迭代器也一样。