Vector push_back移动实现

Vector push_back move implementation

本文关键字:移动 实现 back push Vector      更新时间:2023-10-16

在我的教科书中,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将被复制而不是移动到其目的地。