std::multimap<Key,T,Compare,Allocator>:: emplace
|
template
<
class
...
Args
>
iterator emplace ( Args && ... args ) ; |
(depuis C++11)
(constexpr depuis C++26) |
|
Insère un nouvel élément dans le conteneur construit sur place avec les args donnés.
Le constructeur du nouvel élément (c'est-à-dire
std::
pair
<
const
Key, T
>
) est appelé avec exactement les mêmes arguments que ceux fournis à
emplace
, transmis via
std::
forward
<
Args
>
(
args
)
...
.
Si
value_type
n'est pas
EmplaceConstructible
dans
multimap
à partir de
args
, le comportement est indéfini.
Aucun itérateur ou référence n'est invalidé.
Table des matières |
Paramètres
| args | - | arguments à transmettre au constructeur de l'élément |
Valeur de retour
Un itérateur vers l'élément inséré.
Exceptions
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).
Complexité
Logarithmique par rapport à la taille du conteneur.
Notes
L'utilisation judicieuse de
emplace
permet de construire le nouvel élément tout en évitant les opérations inutiles de copie ou de déplacement.
Exemple
#include <iostream> #include <string> #include <utility> #include <map> int main() { std::multimap<std::string, std::string> m; // utilise le constructeur de déplacement de pair m.emplace(std::make_pair(std::string("a"), std::string("a"))); // utilise le constructeur de déplacement convertissant de pair m.emplace(std::make_pair("b", "abcd")); // utilise le constructeur template de pair m.emplace("d", "ddd"); // emplace avec clé dupliquée m.emplace("d", "DDD"); // utilise le constructeur piecewise de pair 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'; }
Sortie :
a => a b => abcd c => cccccccccc d => ddd d => DDD
Voir aussi
|
(C++11)
|
construit des éléments en place en utilisant un indice
(fonction membre publique) |
|
insère des éléments
ou des nœuds
(depuis C++17)
(fonction membre publique) |