首页 > 后端开发 > C++ > std::vector 是否在 Push_back() 上复制对象?

std::vector 是否在 Push_back() 上复制对象?

Linda Hamilton
发布: 2024-11-04 04:44:01
原创
468 人浏览过

Does std::vector Copy Objects on Push_back()?

std::vector 是否在 push_back() 上复制对象?

在使用 Valgrind 进行调查后,用户得出结论,std::vector 创建了执行push_back()时对象的副本。这就提出了一个问题:

std::vector 不能在不复制的情况下存储引用或指针吗?

不幸的是,答案是肯定的。 std::vector::push_back() 按照设计,创建作为参数传递的对象的副本并将其存储在向量中。

避免复制的替代方案:

如果所需的行为是存储指针或引用而不是副本,请考虑使用 std::vector或 std::vector<:reference_wrapper>>。

注意:

使用指针或引用时,请确保引用的对象在整个过程中保持有效向量的生命周期。使用利用资源获取即初始化(RAII)的智能指针可以有效解决这个问题。

以上是std::vector 是否在 Push_back() 上复制对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板