C++11std::map<K,V>
型には、emplace
他の多くのコンテナーと同様に機能があります。
std::map<int,std::string> m;
std::string val {"hello"};
m.emplace(1, val);
このコードは宣伝どおりに機能し、をstd::pair<K,V>
直接置き換えますが、 のコピーが作成され、実行されます。key
val
値の型をマップに直接埋め込むことは可能ですか? への呼び出しで引数を移動するよりもうまくできるemplace
でしょうか?
より完全な例を次に示します。
struct Foo
{
Foo(double d, string s) {}
Foo(const Foo&) = delete;
Foo(Foo&&) = delete;
}
map<int,Foo> m;
m.emplace(1, 2.3, string("hello")); // invalid