emplace
insert vs emplace vs operator [] w C++ Mapa
Używam map po raz pierwszy i zdałem sobie sprawę, że jest wiele sposobów na wstawienie elementu. Możesz użyć emplace(), opera ... ego z nich nad innymi?
Czy była potrzeba dodania emplace do standardu? Czy jest coś, co nie było możliwe wcześniej bez tego?
Wydajność C++11 push back () z std:: move versus emplace back () Dla już zbudowanych obiektów
W C++11 emplace_back() jest ogólnie preferowany (pod względem wydajności) do push_back(), ponieważ pozwala na budowę in-place ... ego zrobić:
myvector.emplace_back(std::move(mystring));
Czy ruch tutaj jest całkowicie zbędny, czy nie ma żadnego efektu?
Dlaczego emplace back jest szybszy niż push back?
Myślałem, że emplace_back będzie zwycięzcą, robiąc coś takiego:
v.push_back(myClass(arg1, arg2));
Ponieważ emplace_back s ... ]
Uruchamiałem kod w debug mode, co powoduje, że pomiary są nieważne. Dla benchmarkingu, zawsze Uruchom kod w release mode.
std:: map emplace bez kopiowania wartości
Typ C++11 std::map<K,V> posiada funkcję emplace, podobnie jak wiele innych kontenerów.
std::map<int,std::string> ... Foo&) = delete;
Foo(Foo&&) = delete;
}
map<int,Foo> m;
m.emplace(1, 2.3, string("hello")); // invalid