【发布时间】:2018-05-25 05:55:34
【问题描述】:
#include <vector>
using namespace std;
struct TempData {
vector<int> data;
TempData() {
for(int i = 0; i < 100; i++) data.push_back(i);
}
// vector<int> GetData() { // function 1
// return move(data);
// }
vector<int>&& GetData() { // function 2
return move(data);
}
};
int main() {
vector<int> v;
{
TempData td;
v = td.GetData();
}
}
function 1 和 function 2 有什么区别?
function 1 会用move(data) 构造一个临时vector,然后将临时vector 分配给v?
没有更多细节要添加...
【问题讨论】:
-
一个函数返回一个新向量,另一个不返回。
-
您应该考虑对引用限定符进行重载。见stackoverflow.com/questions/21052377/…
-
如果你需要这样做,你应该考虑将对象传入,然后你就不需要它了。
标签: c++ move move-semantics rvalue-reference xvalue