English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C++ mappa emplace_hint()La funzione serve per inserire un nuovo elemento nella mappa utilizzando un suggerimento come posizione dell'elemento. L'elemento viene costruito direttamente (nessuna copia né spostamento).
Chiamata al costruttore dell'elemento tramite i parametri args passati alla funzione. L'inserimento avviene solo se la chiave non esiste.
template<class... Args> iterator emplace_hint(const_iterator position, Args&&...args); //Da C++ 11
args:Inoltra i parametri per costruire l'elemento da inserire nella mappa.
position:Indica la posizione di inserimento del nuovo elemento.
Restituisce l'iteratore al nuovo elemento inserito. Se l'elemento esiste già, l'inserimento fallisce e l'iteratore viene restituito all'elemento esistente.
Lasciatoci vedere un esempio semplice di inserimento di elementi in una mappa.
#include <iostream> #include <map> #include <string> using namespace std; int main(void) { map<char, int> m = { {'b', 20} {'c', 30}, {'d', 40}, }; m.emplace_hint(m.end(), 'e', 50); m.emplace_hint(m.begin(), 'a', 10); cout << "La mappa contiene i seguenti elementi" << endl; for (auto it = m.begin(); it != m.end(); ++it){ cout << it->first << " = " << it->second << endl; } return 0; }
Output:
La mappa contiene i seguenti elementi a = 10 b = 20 c = 30 d = 40 e = 50
Nell'esempio sopra, viene semplicemente inserito un elemento con la coppia di chiave e valore data e la posizione nel mappatura m.
Vediamo un esempio semplice.
#include <map> #include <string> #include <iostream> using namespace std; template<typename M> void print(const M& m) { cout << m.size() << " elementi: " << endl; for (const auto& p : m) { cout << "( " << p.first << " , " << p.second << ") "; } cout << endl; } int main() { map<string, string> m1; m1.emplace("Ram", "Contabilità"); m1.emplace("Rakesh", "Contabilità"); m1.emplace("Sunil", "Ingegneria"); cout << "Dati iniziali della mappa: "; print(m1); cout << endl; m1.emplace_hint(m1.end(), "Deep", "Ingegneria"); cout << "La mappa è stata modificata, ora contiene "; print(m1); cout << endl; }
Output:
Dati iniziali della mappa: 3 elementi: (Rakesh,Contabilità) (Ram,Contabilità) (Sunil,Ingegneria) La mappa è stata modificata, ora contiene 4 elementi: (Deep,Ingegneria) (Rakesh,Contabilità) (Ram,Contabilità) (Sunil,Ingegneria)
Vediamo un esempio semplice di inserimento di elementi in una map con una posizione data.
#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 contiene:"; for (auto& x: mymap){ cout << " [" << x.first << ':' << x.second << "]"; cout << '\n'; } return 0; }
Output:
mymap contiene: [a:12] [b:10] [c:14]
Vediamo un esempio semplice di inserimento di elementi.
#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 << "Inserisci il numero di membri della famiglia: "; cin >> n; cout << "Inserisci il nome e l'età di ogni membro: \n"; for(int i = 0; i<n; i++) { cin >> name; cin >> age; fmly.emplace_hint(fmly.begin(), name, age); } cout << "\nIl numero totale di membri della famiglia è:" << fmly.size(); cout << "\nDettagli della famiglia: \n"; cout << "\nNome | Età \n ________________________ \n"; city::iterator p; for(p = fmly.begin(); p!=fmly.end(); p++) { cout << (*p).first << " | " << (*p).second << " \n "; } return 0; }
Output:
Inserisci il numero di membri della famiglia : 3 Inserisci il nome e l'età di ciascun membro: Ram 42 Sita 37 Laxman 40 Il numero totale dei membri della famiglia è: 3 Dettagli della famiglia: Nome | Età __________________________ Laxman | 40 Ram | 42 Sita | 37
Nell'esempio sopra, inserisce semplicemente gli elementi all'inizio della mappa in base alla scelta dell'utente.