ベクトルまたはセットを返す関数があります。
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?
}
}
ありがとう!!!