Criar um Dicionário em C++
- Usar o Construtor da Lista Inicializadora para Criar um Dicionário em C++
- Utilizar o Construtor Padrão para Criar um Dicionário em C++
-
Utilize o Construtor
copy
para Criar um Dicionário em C++ - Utilize o Construtor Baseado na Gama para Criar um Dicionário em C++
Este artigo irá introduzir como criar um dicionário em C++.
Usar o Construtor da Lista Inicializadora para Criar um Dicionário em C++
Na biblioteca de contentores padrão C++, um dicionário chama-se std::map
, que implementa pares de valores de chaves ordenados com chaves únicas. Operações nos elementos map
como pesquisar, remover e inserir pares têm complexidade logarítmica. Este método utiliza parênteses encaracolados para inicializar o objecto map
com valores literais. Note-se que cada par de elementos é separado pela vírgula, como se mostra no exemplo de código seguinte.
#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;
}
Resultado:
map1 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Utilizar o Construtor Padrão para Criar um Dicionário em C++
Em alternativa, podemos declarar um objecto do tipo map
com determinados parâmetros e depois inicializar cada par de valores-chave utilizando uma declaração separada. Nesta amostra, demonstramos um mapa com as teclas int
e os valores de string
. Podemos sempre colocar estas declarações no laço ou retirar valores da entrada do utilizador, o que corresponderia melhor a um cenário de aplicação no mundo real.
#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;
}
Resultado:
map2 - [ 1:Banana 2:Mango 3:Cocoa 4:Raspberry ]
Utilize o Construtor copy
para Criar um Dicionário em C++
Outra solução para criar um novo objecto map
é utilizar um construtor copy
, que toma outra variável map
existente como argumento e copia os pares de valores chave para o objecto recém inicializado. Note-se que este método não move o objecto map
existente e pode ser reutilizado mais tarde durante a execução do programa.
#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;
}
Resultado:
map3 - [ 1:Apple 2:Banana 3:Mango 4:Raspberry 5:Blackberry 6:Cocoa ]
Utilize o Construtor Baseado na Gama para Criar um Dicionário em C++
O construtor baseado na gama é outra alternativa aos métodos anteriores. Esta solução pode ser utilizada para inicializar uma nova variável map
com os pares de valores chave subconjuntos de alguns objectos map
existentes. Neste exemplo, utilizamos o método find
para especificar o primeiro par de valores-chave na gama. Consequentemente, uma nova variável map2
contém pares que vão desde o valor chave 2
até ao último elemento do objecto 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;
}
Resultado:
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