c++ - 指向 std::vector 的指针

标签 c++ vector std

这就是我遇到的问题。

我有一个指向 std::vector 的指针。所以在我初始化指针之后,我没有向 vector 添加任何项目,也没有删除任何项目。然而,在我的代码中的某个点,我的 std::vector 移动了位置,我最终得到了一个悬空指针。这似乎是随机发生的,即使我在制作指针后从未接触过 vector

我调试了一段时间才弄清楚这个问题。有没有办法保证我的 std::vector 不会改变内存位置?或者有一个指向 vector 的指针只是一个坏主意。

最佳答案

Or is it just a bad idea to have a pointer to a vector?

一般来说,我会说用原始指针来控制对象的生命周期是个坏主意。不要使用原始指针和自动内存管理,尝试使用具有适当所有权语义的智能指针( std::shared_ptr<>std::unique_ptr<> )。仅将原始指针用于观察指针(如果您希望能够在运行时验证它们是否悬空,请使用 weak_ptr<> )。

此外,在许多情况下,您可能会意识到根本不需要指针。在这种情况下,只需使用具有自动存储的对象,由于移动语义,它可以在 C++11 中高效地移动或按值传递/返回。

关于c++ - 指向 std::vector 的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369504/

相关文章:

c++ - 如何知道 std::cin 是否来自重定向?

c++ - 如何确定在 C++ 中添加到 vector 的值的数量?

C++:从 container1 中查找不在 container2 中的任何元素

http - D std.zlib 使用 http 进行流压缩

actionscript-3 - AS3 : Rotation into Vector

c++ - 如何从 UTC 时间戳的组件(Y、M、D、h、m、s、ms)创建 system_clock::time_point

c++ - 如何将所有 xml 格式的 xmlNodePtr 转换为字符串?

c++ - 在 C 结构中定义 C++ 函数

c++ - 为什么我的一些立方体面没有按照我希望的方式呈现?

c++ - 用于将一系列数字从一行识别为 vector 的 Boost Spirit 语法?