タグ付けされた質問 「emplace」

5
c ++マップに挿入対emplace対operator []
私は初めてマップを使用しましたが、要素を挿入する方法はたくさんあることに気付きました。あなたは使用することができemplace()、operator[]またはinsert()、プラス使用してのようにバリアントvalue_typeまたはmake_pair。それらすべてに関する情報や特定のケースに関する質問はたくさんありますが、全体像を理解することはできません。したがって、私の2つの質問は次のとおりです。 それらのそれぞれの利点は何ですか? 標準にエンプレースを追加する必要がありましたか?それがなければ以前は不可能であったことはありますか?

2
すでに構築されたオブジェクトに対するstd :: moveとemplace_back()を使用したC ++ 11 push_back()の効率
C ++ 11では、インプレース構築が可能であるemplace_back()ため、(効率の観点から)一般的に好まれますが、すでに構築されたオブジェクトで使用する場合も同様ですか?push_back()push_back(std::move()) たとえばemplace_back()、次のような場合でもまだ好まれますか? std::string mystring("hello world"); std::vector<std::string> myvector; myvector.emplace_back(mystring); myvector.push_back(std::move(mystring)); // (of course assuming we don't care about using the value of mystring after) さらに、上記の例には、代わりに次のような利点がありますか。 myvector.emplace_back(std::move(mystring)); または、ここでの移動は完全に冗長ですか、それとも効果がありませんか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.