据我所知,采用指针或对 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?
没有。重新分配可能会导致指针发生变化。重新分配后使用旧指针是未定义的行为。迭代器也是如此。
关于c++ - std::vector::data() 重新分配安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65456266/