Crea un dizionario in C++
- Usa il costruttore dell’lista di inizializzatori per creare un dizionario in C++
- Usa il costruttore predefinito per creare un dizionario in C++
-
Usa il costruttore
copy
per creare un dizionario in C++ - Usa il costruttore basato su intervalli per creare un dizionario in C++
Questo articolo introdurrà come creare un dizionario in C++.
Usa il costruttore dell’lista di inizializzatori per creare un dizionario in C++
Nella libreria dei contenitori standard C++, un dizionario è chiamato std::map
, che implementa coppie chiave-valore ordinate con chiavi univoche. Le operazioni sugli elementi della map
come la ricerca, la rimozione e l’inserimento di coppie hanno una complessità logaritmica. Questo metodo utilizza le parentesi graffe per inizializzare l’oggetto map
con valori letterali. Notare che ogni coppia di elementi è separata dalla virgola, come mostrato nell’esempio di codice seguente.
#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;
}
Produzione:
map1 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Usa il costruttore predefinito per creare un dizionario in C++
In alternativa, possiamo dichiarare un oggetto di tipo map
con i parametri dati e quindi inizializzare ogni coppia chiave-valore utilizzando un’istruzione separata. In questo esempio, mostriamo una mappa con chiavi int
e i valori di string
. Possiamo sempre inserire queste istruzioni nel bucle o prendere valori dall’input dell’utente, che corrisponderebbero meglio a uno scenario di applicazione del mondo reale.
#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;
}
Produzione:
map2 - [ 1:Banana 2:Mango 3:Cocoa 4:Raspberry ]
Usa il costruttore copy
per creare un dizionario in C++
Un’altra soluzione per creare un nuovo oggetto map
è usare un costruttore copy
, che prende un’altra variabile map
esistente come argomento e copia le coppie chiave-valore nell’oggetto appena inizializzato. Si noti che questo metodo non sposta l’oggetto map
esistente e può essere riutilizzato in seguito durante l’esecuzione del programma.
#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;
}
Produzione:
map3 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Usa il costruttore basato su intervalli per creare un dizionario in C++
Il costruttore basato su intervalli è un’altra alternativa ai metodi precedenti. Questa soluzione può essere utilizzata per inizializzare una nuova variabile map
con le coppie chiave-valore del sottoinsieme di alcuni oggetti map
esistenti. In questo esempio, utilizziamo il metodo find
per specificare la prima coppia chiave-valore nell’intervallo. Di conseguenza, una nuova variabile map2
contiene coppie a partire dal valore-chiave 2
fino all’ultimo elemento dell’oggetto map1
.
#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;
}
Produzione:
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