std::vector 是否在 push_back() 上复制对象?
在使用 Valgrind 进行调查后,用户得出结论,std::vector 创建了执行push_back()时对象的副本。这就提出了一个问题:
std::vector 不能在不复制的情况下存储引用或指针吗?
不幸的是,答案是肯定的。 std::vector::push_back() 按照设计,创建作为参数传递的对象的副本并将其存储在向量中。
避免复制的替代方案:
如果所需的行为是存储指针或引用而不是副本,请考虑使用 std::vector
注意:
使用指针或引用时,请确保引用的对象在整个过程中保持有效向量的生命周期。使用利用资源获取即初始化(RAII)的智能指针可以有效解决这个问题。
以上是std::vector 是否在 Push_back() 上复制对象?的详细内容。更多信息请关注PHP中文网其他相关文章!