c++ - std::vector::data() 重新分配安全吗?
问题描述
据我所知,获取std::vector
元素的指针或引用被认为是不好的做法。但是呢std::vector::data()
?重新分配后指针是否data()
仍然有效?
解决方案
据我所知,将指针或对 std::vector 元素的引用视为不好的做法。
引用和指针可以避免复制开销,如果您可以确保std::vector
在引用或指针生命周期内不会重新分配,这不是一个坏习惯。
(顺便说一句,在 C++ 中,可以使用引用时不需要使用指针)
但是 std::vector::data() 呢?data() 获取的指针在重新分配后是否仍然有效?
不会。重新分配可能会导致指针发生变化。在重新分配后使用旧指针是一种未定义的行为。迭代器也一样。
推荐阅读
- wordpress - 将带有获取参数的 url 更改为带有路径的 url。WordPress 网站
- php - 如何在pdf中使用图像
- ios - React Native:从 Expo 弹出后导航无法正常工作
- openlayers - openlayers的Modify.js中相邻的removeFeature和addFeature函数调用是否必要?
- c# - 谁能帮我用c#修复这个程序?
- c# - 如何在查看之前解密数据?
- r - change list elements in R
- java - Java中字符串的位级表示
- sql-server - 如果使用 sqlserver 驱动程序,map 为现有键返回 0
- java - 当我收到 NumberFormatException 时,如何防止或重做 SWING 输入?