Erstellen eines Dictionary in C++
- Verwenden des Initialisierungslisten-Konstruktors zum Erstellen eines Dictionary in C++
- Verwenden des Default-Konstruktors zum Erstellen eines Dictionaries in C++
-
Verwenden des
copy
-Konstruktors zum Erstellen eines Dictionaries in C++ - Verwenden des bereichsbasierten Konstruktors zum Erstellen eines Dictionaries in C++
Dieser Artikel führt in die Erstellung eines Dictionary in C++ ein.
Verwenden des Initialisierungslisten-Konstruktors zum Erstellen eines Dictionary in C++
In der C++-Standard-Container-Bibliothek wird ein Dictionary std::map
genannt, das sortierte Schlüssel-Wert-Paare mit eindeutigen Schlüsseln implementiert. Operationen auf den map
-Elementen wie Suchen, Entfernen und Einfügen von Paaren haben logarithmische Komplexität. Diese Methode verwendet geschweifte Klammern, um das map
-Objekt mit den literalen Werten zu initialisieren. Beachten Sie, dass jedes Elementpaar durch ein Komma getrennt wird, wie im folgenden Codebeispiel gezeigt.
#include <iostream>
#include <map>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::map;
using std::string;
template <typename Map>
void PrintMap(Map& m) {
cout << "[ ";
for (auto& item : m) {
cout << item.first << ":" << item.second << " ";
}
cout << "]\n";
}
int main() {
map<int, string> map1 = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Raspberry",
},
{
5,
"Blackberry",
},
{
6,
"Cocoa",
}};
cout << "map1 - ";
PrintMap(map1);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
map1 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Verwenden des Default-Konstruktors zum Erstellen eines Dictionaries in C++
Alternativ kann man ein Objekt vom Typ map
mit gegebenen Parametern deklarieren und dann jedes Schlüssel-Wert-Paar mit einer separaten Anweisung initialisieren. In diesem Beispiel zeigen wir eine Map mit int
-Schlüsseln und den Werten von string
-s. Man kann diese Anweisungen jederzeit in die Schleife einfügen oder Werte aus der Benutzereingabe übernehmen, was einem realen Anwendungsszenario besser entsprechen würde.
#include <iostream>
#include <map>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::map;
using std::string;
template <typename Map>
void PrintMap(Map& m) {
cout << "[ ";
for (auto& item : m) {
cout << item.first << ":" << item.second << " ";
}
cout << "]\n";
}
int main() {
map<int, string> map2;
map2[1] = "Banana";
map2[2] = "Mango";
map2[3] = "Cocoa";
map2[4] = "Raspberry";
cout << "map2 - ";
PrintMap(map2);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
map2 - [ 1:Banana 2:Mango 3:Cocoa 4:Raspberry ]
Verwenden des copy
-Konstruktors zum Erstellen eines Dictionaries in C++
Eine andere Möglichkeit, ein neues map
-Objekt zu erstellen, ist die Verwendung eines copy
-Konstruktors, der eine andere vorhandene map
-Variable als Argument nimmt und die Schlüssel-Wert-Paare in das neu initialisierte Objekt kopiert. Beachten Sie, dass diese Methode das bestehende map
-Objekt nicht verschiebt und später während der Programmausführung wiederverwendet werden kann.
#include <iostream>
#include <map>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::map;
using std::string;
template <typename Map>
void PrintMap(Map& m) {
cout << "[ ";
for (auto& item : m) {
cout << item.first << ":" << item.second << " ";
}
cout << "]\n";
}
int main() {
map<int, string> map1 = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Raspberry",
},
{
5,
"Blackberry",
},
{
6,
"Cocoa",
}};
map<int, string> map3(map1);
cout << "map3 - ";
PrintMap(map3);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
map3 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Verwenden des bereichsbasierten Konstruktors zum Erstellen eines Dictionaries in C++
Der bereichsbasierte Konstruktor ist eine weitere Alternative zu den vorherigen Methoden. Diese Lösung kann verwendet werden, um eine neue map
-Variable mit der Teilmenge von Schlüssel-Wert-Paaren eines vorhandenen map
-Objekts zu initialisieren. In diesem Beispiel verwenden wir die Methode find
, um das erste Schlüssel-Wert-Paar im Bereich anzugeben. Folglich enthält eine neue map2
-Variable Paare beginnend mit dem Schlüsselwert 2
bis zum letzten Element des map1
-Objekts.
#include <iostream>
#include <map>
using std::cin;
using std::copy;
using std::cout;
using std::endl;
using std::map;
using std::string;
template <typename Map>
void PrintMap(Map& m) {
cout << "[ ";
for (auto& item : m) {
cout << item.first << ":" << item.second << " ";
}
cout << "]\n";
}
int main() {
map<int, string> map1 = {{
1,
"Apple",
},
{
2,
"Banana",
},
{
3,
"Mango",
},
{
4,
"Raspberry",
},
{
5,
"Blackberry",
},
{
6,
"Cocoa",
}};
map<int, string> map4(map1.find(2), map1.end());
cout << "map4 - ";
PrintMap(map4);
cout << endl;
return EXIT_SUCCESS;
}
Ausgabe:
map4 - [ 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook