当前位置:  开发笔记 > 编程语言 > 正文

将项目移动到列表而不复制

如何解决《将项目移动到列表而不复制》经验,为你挑选了2个好方法。



1> Vittorio Rom..:

这个可以吗?

foo.emplace_back(std::move(bar));

是的,因为:

    std::move(bar)强制转换bar右值参考.

    std::list::emplace_back获取任意数量的转发引用并使用它们在最后构造一个元素.

    std::vector::vector有一个带有右值引用的重载(6),它可以移动rhs向量的内容而不执行任何副本.



2> Reinstate Mo..:

是的,Q中的代码当然可以.即使使用push_back也没关系:

foo.push_back(std::move(bar));


就个人而言,我认为在这种情况下应该首选`push_back`.我认为它更清楚.
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有