English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ map emplace_hint()函数用于通过使用提示作为元素位置将新元素插入到容器中来扩展map容器。元素是直接构建的(既不复制也不移动)。
通过调用传递给该函数的参数args的元素构造函数。仅在密钥不存在时才进行插入。
template <class... Args> iterator emplace_hint(const_iterator position, Args&&...args); //从 C++ 11 开始
args: transfère les paramètres pour construire l'élément à insérer dans la carte.
position: indique la position d'insertion du nouveau élément.
Il renvoie l'itérateur à l'élément inséré. Si l'élément existe déjà, l'insertion échoue et l'itérateur est renvoyé à l'élément existant.
regardons un exemple simple d'insertion d'éléments dans la carte.
#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 carte contient les éléments suivants" << endl; for (auto it = m.begin(); it != m.end(); ++it){ cout << it->first << " = " << it->second << endl; } return 0; }
Sortie :
La carte contient les éléments suivants a = 10 b = 20 c = 30 d = 40 e = 50
Dans cet exemple, il ne s'agit que d'insérer un élément avec la paire de clé-valeur et la position donnée dans la carte m.
regardons un exemple simple.
#include <map> #include <string> #include <iostream> using namespace std; template<typename M> void imprimer(const M& m) { cout << m.size() << " éléments: " << endl; for (const auto& p : m) { cout << "( " << p.first << " , " << p.second << ") "; } cout << endl; } int main() { map<string, string> m1; m1.emplace("Ram", "Comptabilité"); m1.emplace("Rakesh", "Comptabilité"); m1.emplace("Sunil", "Ingénierie"); cout << "données de départ de la carte: "; imprimer(m1); cout << endl; m1.emplace_hint(m1.end(), "Deep", "Ingénierie"); cout << "map a été modifiée, elle contient maintenant "; imprimer(m1); cout << endl; }
Sortie :
données de départ de la carte 3 elements: (Rakesh,Comptabilité) (Ram,Comptabilité) (Sunil,Ingénierie) La map a été modifiée, maintenant elle contient 4 elements: (Deep,Engineering) (Rakesh,Accounting) (Ram,Accounting) (Sunil,Engineering)
Laissez-nous voir un exemple simple, insérer des éléments dans un map avec une position donnée.
#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 contient:"; for (auto& x: mymap) { cout << "[" << x.first << ':' << x.second << "]'; cout << '\n'; } return 0; }
Sortie :
mymap contains: [a:12] [b:10] [c:14]
Laissez-nous voir un exemple simple d'insertion d'éléments.
#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 << "\nEntrez le nombre de membres de la famille: "; cin >> n; cout << "\nEntrez le nom et l'âge de chaque membre: \n"; for(int i = 0; i < n; i++) { cin >> name; cin >> age; fmly.emplace_hint(fmly.begin(), name, age); } cout << "\nLe nombre total de membres de la famille est:" << fmly.size(); cout << "\nDétails des membres de la famille: \n"; cout << "\nNom | Âge \n __________________________\n"; city::iterator p; for(p = fmly.begin(); p != fmly.end(); p++) { cout << (*p).first << "" << "|" << (*p).second << " \n "; } return 0; }
Sortie :
Entrez le nombre de membres de la famille: 3 Entrez le nom et l'âge de chaque membre: Ram 42 Sita 37 Laxman 40 Le nombre total de membres de la famille est:3 Détails des membres de la famille: Nom | Âge __________________________ Laxman | 40 Ram | 42 Sita | 37
Dans l'exemple ci-dessus, il ne s'agit que d'insérer des éléments à l'extrémité du début du map en fonction du choix de l'utilisateur.