我有一个返回向量或集合的函数:
set<int> foo() {
set<int> bar;
// create and massage bar
return bar;
}
set<int> afoo = foo();
在这种情况下,我在函数 foo() 中创建了一个临时内存空间,然后afoo
通过复制将其分配给它。我真的很想避免这个副本,有什么简单的方法可以在 C++11 中做到这一点吗?我认为这与右值有关。
好的,更新问题:如果我要返回一个我自己定义的对象,而不是向量或集合的东西,这是否意味着我应该定义一个移动构造函数?像这样:
class value_to_return {
value_to_return (value_to_return && other) {
// how to write it here? I think std::move is supposed to be used?
}
}
谢谢!!!