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

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

Linda Hamilton
Linda Hamilton原创
2024-11-04 04:44:01465浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn