c++ - 无法理解 vector.resize() 和 vector.shrink_to_fit() 的工作
问题描述
我遇到了 2 个描述使用的代码,std::vector::resize()
并且std::vector::shrink_to_fit()
无法理解哪一个会破坏向量的元素。
在示例 1 中,即使在resize(5)
使用之后,向量也具有所有元素,而在示例 2resize(4)
中,则消除了向量的第 5 个元素。看看并告诉我是否有问题。
解决方案
第一个示例是未定义的行为,因为向量在被调用后只有 5 个元素,resize(5)
并且可以访问索引为 9 的元素。但是,它可能在发布版本中工作,因为尚未释放其余元素的内存。调试版本可能会捕获错误。
shrink_to_fit() 不会改变向量的内容。但是,它可能会将元素移动到较小的内存块并释放旧内存,从而导致显示先前的错误。
第二个示例正确使用了向量。
推荐阅读
- file-upload - 自定义上传按钮
- javascript - jQuery 没有正确渲染数据表
- json - 根据行数而不是数据大小 azure 数据工厂拆分 JSON 文件
- powershell - 使用 ACL 的 Powershell 快捷方式权限?
- postgresql - Grafana 和 PostgreSQL:当数据库以 UTC 保存时,从浏览器时间时区的时间戳中提取小时
- python - Python wrong behavior for the SUM OF 2D numpy.array
- javascript - 在 svelte 中使用组件的功能
- mongodb - 将 flink 数据持久化到 mongo
- bash - 如何提取具有存档名称的存档作为路径的目录?
- c# - 如何使用 C# 将私人列出的视频从 YouTube 访问到我的网站