std::multimap<Key,T,Compare,Allocator>::emplace
Von cppreference.com
| template< class... Args > iterator emplace( Args&&... args ); |
(seit C++11) | |
Fügt ein neues Element in den Container ein, das mit den gegebenen args vor Ort konstruiert wird.
Der Konstruktor des neuen Elements (d. h. std::pair<const Key, T>) wird mit exakt denselben Argumenten aufgerufen, die an emplace übergeben wurden, weitergeleitet über std::forward<Args>(args)....
Eine sorgfältige Verwendung von emplace ermöglicht die Konstruktion des neuen Elements unter Vermeidung unnötiger Kopier- oder Verschiebungsoperationen.
Keine Iteratoren oder Referenzen werden ungültig.
Inhalt |
[bearbeiten] Parameter
| args | - | Argumente, die an den Konstruktor des Elements weitergeleitet werden |
[bearbeiten] Rückgabewert
Ein Iterator zu dem eingefügten Element.
[bearbeiten] Ausnahmen
Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, hat diese Funktion keine Auswirkungen (starkes Ausnahmesicherheitsgarantie).
[bearbeiten] Komplexität
Logarithmisch zur Größe des Containers.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <string> #include <utility> #include <map> int main() { std::multimap<std::string, std::string> m; // uses pair's move constructor m.emplace(std::make_pair(std::string("a"), std::string("a"))); // uses pair's converting move constructor m.emplace(std::make_pair("b", "abcd")); // uses pair's template constructor m.emplace("d", "ddd"); // emplace with duplicate key m.emplace("d", "DDD"); // uses pair's piecewise constructor m.emplace(std::piecewise_construct, std::forward_as_tuple("c"), std::forward_as_tuple(10, 'c')); for (const auto& p : m) std::cout << p.first << " => " << p.second << '\n'; }
Ausgabe
a => a b => abcd c => cccccccccc d => ddd d => DDD
[bearbeiten] Siehe auch
| (C++11) |
konstruiert Elemente "in place" unter Verwendung eines Hinweises (public member function) |
| fügt "in place" ein, wenn der Schlüssel nicht existiert, tut nichts, wenn der Schlüssel existiert (public member function) | |
| fügt Elemente ein oder Knoten(seit C++17) (public member function) |