c++ - vector push_back move 实现

标签 c++ vector data-structures move

在我的课本中,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/

相关文章:

c++ - 如何获取 n 行的整数直到\n

C# 优先级列表

c++ - C++ 编译器如何处理 const 数组

matlab - 在matlab上绘制矩阵的点

c++ - 将 fwrite() 和 fread() 与 malloc 和 realloc 一起使用

r - 组合列向量,然后合并到特定格式的数据表中

arrays - 一个数组已经是一个平衡的 B 树,这是真的吗?

algorithm - 设计数据结构就像改进堆栈一样

c++ - "InitGoogleLogging"是做什么的?

c++ - 从 vector 中删除一个元素