をコピーせずに、私は、データをコピーせずにfoo
の最後にbar
を移動する必要がありますどのように移動アイテム
std::list<std::vector<float>> foo;
std::vector<float> bar;
を考えると?
これは問題ありませんか?
foo.emplace_back(std::move(bar));
をコピーせずに、私は、データをコピーせずにfoo
の最後にbar
を移動する必要がありますどのように移動アイテム
std::list<std::vector<float>> foo;
std::vector<float> bar;
を考えると?
これは問題ありませんか?
foo.emplace_back(std::move(bar));
これは問題ありませんか?
foo.emplace_back(std::move(bar));
はい、ので:
std::move(bar)
は右辺値参照にbar
をキャスト。
std::list::emplace_back
は、任意の数のforwarding referencesをとり、最後に要素を構成するために使用します。
std::vector::vector
任意のコピーを行うことなく、RHSベクトルの内容を移動右辺値参照を、かかる過負荷(6)を有しています。
はい、Qのコードは確かにOKです。でもOKでしょうpush_back
を使用して:
foo.push_back(std::move(bar));
がどのようにデータをコピーせず
foo
の最後にbar
を移動する必要がありますか?これがOKでfoo.push_back(std::move(bar));
:
std::vector
の移動のコンストラクタを使用していますか?同様にOKですfoo.emplace_back(std::move(bar));
。
個人的には、この場合は「push_back」が望ましいと思います。私はそれがはっきりしていると思う。 –