Partilhar via


map::emplace_hint

Insere um elemento construído no lugar (nenhuma operação de cópia ou movimentação é executada), com uma dica de posicionamento.

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

Parâmetros

Parâmetro

Descrição

args

Os argumentos encaminhados para construir um elemento a ser inserido mais comumente no mapa a menos que o mapa já contenha esse elemento, ou, a menos que já contenha um elemento cuja chave está ordenada equivalente.

where

O local para iniciar a pesquisa pelo ponto de inserção correto. (Se esse ponto precede imediatamente where, a inserção pode ocorrer em tempo amortizados constantes em vez do tempo logarítmicos.)

Valor de retorno

Um iterador ao elemento inserido recentemente.

Se a inserção falhou porque o elemento já existir, o retornará um iterador ao elemento existente pela chave.

Comentários

Nenhuma iterador ou referência são invalidados por essa função.

Durante a inserção, se uma exceção é gerada, o estado do contêiner não é alterado.

value_type de um elemento é um par, de forma que o valor de um elemento é um par ordenado com o primeiro componente igual ao valor de chave e o segundo componente igual ao valor de dados do elemento.

Exemplo

// 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;
}

Saída

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)

Requisitos

mapa <deCabeçalho: >

Namespace: std

Consulte também

Referência

<map>

Classe map

Biblioteca de Modelos Padrão