Partager via


map::emplace_hint

Insère un élément construit en place (aucune opération de copie ou de mouvements n'est exécutée), avec un indicateur de positionnement.

template<class... Args>
   iterator emplace_hint(
      const_iterator where,
      Args&&... args);

Paramètres

Paramètre

Description

args

Les arguments transférés pour construire un élément à insérer dans la map à moins que la map comporte déjà cet élément ou, plus généralement, sauf s'il contient déjà un élément dont la clé est classée de façon équivalente.

where

Emplacement pour commencer la recherche du point d'insertion correct. (Si ce point précède immédiatement where, l'insertion peut se produire dans le temps fixe amorti au lieu du temps logarithmique.)

Valeur de retour

Un itérateur pour l'élément récemment inséré.

Si l'insertion a échoué car l'élément existe déjà, un itérateur pour l'élément existant est retourné avec sa clé.

Notes

Aucun itérateur ou référence ne sont invalidés par cette fonction.

Pendant la mise en place, si une exception est levée, l'état du conteneur n'est pas modifié.

La value_type d'un élément consiste des paires, afin que la valeur d'un élément soit une paire classée avec comme premier composant la valeur de clé et le second composant égal à la valeur de l'élément.

Exemple

// map_emplace.cpp
// compile with: /EHsc
#include <map>
#include <string>
#include <iostream>

using namespace std;

template <typename M> void print(const M& m) {
    cout << m.size() << " elements: " << endl;

    for (const auto& p : m) {
        cout << "(" << p.first <<  "," << p.second << ") ";
    }

    cout << endl;
}

int main()
{
    map<string, string> m1;

    // Emplace some test data
    m1.emplace("Anna", "Accounting");
    m1.emplace("Bob", "Accounting");
    m1.emplace("Carmine", "Engineering");

    cout << "map starting data: ";
    print(m1);
    cout << endl;

    // Emplace with hint
    // m1.end() should be the "next" element after this emplacement
    m1.emplace_hint(m1.end(), "Doug", "Engineering");

    cout << "map modified, now contains ";
    print(m1);
    cout << endl;
}

Sortie

map starting data: 3 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering)

map modified, now contains 4 elements:
(Anna,Accounting) (Bob,Accounting) (Carmine,Engineering) (Doug,Engineering)

Configuration requise

En-tête : <mappage>

Espace de noms : std

Voir aussi

Référence

<map>

map, classe

Bibliothèque STL (Standard Template Library)