gpt4 book ai didi

c++ - vector push_back move 实现

转载 作者:太空狗 更新时间:2023-10-29 21:39:22 28 4
gpt4 key购买 nike

在我的课本中,vector push_back move 实现的实现是:

void push_back( Object && x )
{
if( theSize == theCapacity )
reserve( 2 * theCapacity + 1 );
objects[ theSize++ ] = std::move( x );
}

我对 std::move 的理解是,它基本上将项目静态转换为右值引用。那么,当 x 已经作为右值引用传入时,为什么在最后一行他们必须使用 std::move( x )?

最佳答案

x 是一个右值引用,但您必须遵循的经验法则是:如果它有名称,它就是一个左值。因此,您必须应用 std::move 将其类型转换为右值。如果你遗漏了 std::move 那么 x 将被复制而不是 move 到它的目的地。更多信息可以在 Rvalue References Explained 中找到.

关于c++ - vector push_back move 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com