English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map emplace_hint()A função é usada para inserir um novo elemento no container map usando uma posição sugerida para o elemento. O elemento é construído diretamente (não é copiado nem movido).
Chama o construtor do elemento passando os argumentos args para a função. A inserção é feita apenas quando a chave não existe.
template<class... Args> iterator_emplace_hint(const_iterator posição, Args&&...args); //De C++ 11 Início
argsargs
:forward para construir os parâmetros do elemento a ser inserido no mapeamento.posição
Retorno
Ele retorna o iterador para o elemento recém-inserido. Se o elemento já existir, a inserção falhará e o iterador será retornado para o elemento existente.
#include <iostream> #include <map> #include <string> using namespace std; Vamos ver um exemplo simples de como inserir elementos no mapa. int main(void) { map<char, int> m = { 2{'d', {'b', 3{'d', {'c', 4{'d', 0}, }; 50); m.emplace_hint(m.begin(), 'a', 10); cout << "O mapa contém os seguintes elementos" << endl; for (auto it = m.begin(); it != m.end(); ++it){ cout << it->first << " = " << it->second << endl; } return 0; }
Saída:
O mapa contém os seguintes elementos a = 10 b = 20 c = 30 d = 40 e = 50
No exemplo acima, ele apenas insere o elemento com o par de chave-valor e posição dados no mapeamento m.
Vamos ver um exemplo simples.
#include <map> #include <string> #include <iostream> using namespace std; template<typename M> void print(const M& m) { cout << m.size() << " elementos: " << endl; for (const auto& p : m) { cout << "( " << p.first << " , " << p.second << ") "; } cout << endl; } int main() { map<string, string> m1; m1.emplace("Ram", "Contabilidade"); m1.emplace("Rakesh", "Contabilidade"); m1.emplace("Sunil", "Engenharia"); cout << "map dados iniciais: "; print(m1); cout << endl; m1.emplace_hint(m1.end(), "Deep", "Engenharia"); cout << "map já foi modificado, agora contém "; print(m1); cout << endl; }
Saída:
map dados iniciais: 3 elements: (Rakesh, Contabilidade) (Ram, Contabilidade) (Sunil, Engenharia) O map foi modificado, agora contém}} 4 elements: (Deep,Engenharia) (Rakesh,Contabilidade) (Ram,Contabilidade) (Sunil,Engenharia)
Vamos ver um exemplo simples, inserindo elementos em um map com uma posição específica.
#include <iostream> #include <map> using namespace std; int main () { map<char, int> mymap; auto it = mymap.end(); it = mymap.emplace_hint(it, 'b',10); mymap.emplace_hint(it, 'a',12); mymap.emplace_hint(mymap.end(), 'c',14); cout << "mymap contém:"; for (auto& x: mymap){ cout << " [" << x.first << ':' << x.second << "]"; cout << '\n'; } return 0; }
Saída:
mymap contains: [a:12] [b:10] [c:14]
Vamos ver um exemplo simples de inserção de elementos.
#include <iostream> #include <map> #include <string> using namespace std; int main() { typedef map<string, int> city; string name; int age; city fmly; int n; cout << "\nDigite o número de membros da família: "; cin >> n; cout << "\nDigite o nome e a idade de cada membro: \n"; for(int i = 0; i < n; i++) { cin >> name; cin >> age; fmly.emplace_hint(fmly.begin(), name, age); } cout << "\nNúmero total de membros da família:\ cout << "\nDetalhes dos membros da família: \n"; cout << "\nNome | Idade \n________________________\n"; city::iterator p; for(p = fmly.begin(); p != fmly.end(); p++) { cout << (*p).first << " " << "|" << (*p).second << " \n "; } return 0; }
Saída:
Insira o número de membros da família: 3 Insira o nome e a idade de cada membro: Ram 42 Sita 37 Laxman 40 O número total de membros da família é:3 Detalhes da Família: Nome | Idade __________________________ Laxman | 40 Ram | 42 Sita | 37
No exemplo acima, ele apenas insere elementos no início do map com base na escolha do usuário.