Método eficiente de armazenamento utilizando containers (Vector e Map)
Publicado por Robson Lopes (última atualização em 20/12/2009)
[ Hits: 7.698 ]
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; }
Jogando dados e somando os valores
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Queria saber se existe alguma forma de desistalar programa no ubuntu s... (2)
Quero saber sobre os melhores aplicativos de office para usar em 2024 ... (1)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (16)