Método eficiente de armazenamento utilizando containers (Vector e Map)
Publicado por Robson Lopes (última atualização em 20/12/2009)
[ Hits: 7.784 ]
Para quem deseja um exemplo de containers sendo utilizado com uma classe própria, esse será um bom exemplo.
/* * Nome: Robson Lopes * Nick: Rob_Som * Linguagem: C++ * Titulo: Método eficiente de Armazenamento, utilizando containers(Vector, Map, string). * Objetivo: Cadastrar pessoas em ordem alfabética com eficiencia O(log(n)) */ #include <iostream> #include <vector> #include <map> #include <string> using std::map; using std::vector; using std::string; using std::cin; using std::cout; using std::endl; class Pessoa{ private: /*Atributos*/ string Nome; string Sobrenome; int Idade; public: Pessoa(string , string , int ); //Construtor /*Funções membros*/ void setNome(string n){ this->Nome = n; } void setSobrenome(string s){ this->Sobrenome = s; } void setIdade(int i){ this->Idade = i > 0 ? i : 1; } //validação string getNome() const { return this->Nome; } string getSobrenome() const { return this->Sobrenome; } int getIdade() const { return this->Idade; } void PrintPessoa() const; }; Pessoa::Pessoa(string n, string s, int i){ this->setNome(n); this->setSobrenome(s); this->setIdade(i); } void Pessoa::PrintPessoa() const { cout << "Nome: " << this->getNome() << endl; cout << "Sobrenome: " << this->getSobrenome() << endl; cout << "Idade: " << this->getIdade() << endl; } int main(void){ /*Na Chave utilizo container string. Para o Valor utilizo o container vector armazenando um * objeto do tipo Pessoa. */ map< string, vector<Pessoa> > Mymap; /*Iterator para correr o container map. Lembrando que será ordenado pela chave(nome completo). * Fique tranquilo, que o map se encarregará disso. */ map< string, vector<Pessoa> >::iterator itM; /*Iterator para acessar o container Vector que possui o Objeto Pessoa */ vector<Pessoa>::iterator itV; int opcao, idade; string nome, sobrenome, completo, chave; do{ cout << "1. Para Adicionar" << endl; cout << "2. Para Lista" << endl; cout << "3. Para Sair" << endl; cout << "Opção: "; cin >> opcao; if(opcao == 1){ cout << endl << "Digite o Nome: "; cin >> nome; cout << "Digite o Sobrenome: "; cin >> sobrenome; cout << "Digite a Idade: "; cin >> idade; completo = nome + sobrenome; Pessoa *A = new Pessoa(nome, sobrenome, idade); Mymap[completo].push_back(*A); } else if(opcao == 2){ cout << endl; for(itM = Mymap.begin(); itM != Mymap.end(); itM++){ /*(*itM).first eu pego a chave e begin() é a primeira posicão do Vector */ itV = Mymap[(*itM).first].begin(); itV->PrintPessoa(); cout << endl; } } }while(opcao != 3); return 0; }
Um parser para tratar opções passadas para um programa em C
Calculadora simples de dois valores, soma, subtrai, multiplica e divide
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
O Que Fazer Após Instalar Ubuntu 25.04
Erro ao atualizar o archlinux [RESOLVIDO] (2)
Erro ao executar o comando para dar um get email (0)