C+11 rvalue和移动语义混淆(返回语句)我试图理解rvalue引用并移动C+11的语义。这些例子之间有什么区别,它们中的哪一个将不进行向量复制?第一个例子std::vector<int> return_vector(void){
std::vector<int> tmp {1,2,3,4,5};
return tmp;}std::vector<int> &&rval_ref = return_vector();第二个例子std::vector<int>&& return_vector(void){
std::vector<int> tmp {1,2,3,4,5};
return std::move(tmp);}std::vector<int> &&rval_ref = return_vector();第三个例子std::vector<int> return_vector(void){
std::vector<int> tmp {1,2,3,4,5};
return std::move(tmp);}std::vector<int> &&rval_ref = return_vector();
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
第一个例子
std::vector<int> return_vector(void){ std::vector<int> tmp {1,2,3,4,5}; return tmp;}std::vector<int> &&rval_ref = return_vector();
rval_ref
rval_ref
const std::vector<int>& rval_ref = return_vector();
rval_ref
第二个例子
std::vector<int>&& return_vector(void){ std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp);}std::vector<int> &&rval_ref = return_vector();
rval_ref
tmp
第三个例子
std::vector<int> return_vector(void){ std::vector<int> tmp {1,2,3,4,5}; return std::move(tmp);}std::vector<int> &&rval_ref = return_vector();
std::move
tmp
最佳做法
std::vector<int> return_vector(void){ std::vector<int> tmp {1,2,3,4,5}; return tmp;}std::vector<int> rval_ref = return_vector();
tmp
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
std::vector<int> return_vector(){ std::vector<int> tmp {1,2,3,4,5}; return tmp;}std::vector<int> rval_ref = return_vector();
- 3 回答
- 0 关注
- 425 浏览
添加回答
举报
0/150
提交
取消