1
Programação e Scripts / exemplo de uso do map e vector em C++
« Online: 12 de Agosto de 2007, 16:30 »
Pra quem naum conhece o map e o vector do C++ aqui vai um exemplo,
Agora vcs devem estar se pergutando eu posso usar um map com vetor a resposta é sim voce pode usar um std::map< std::string, std::vector<std::string> > que é um mapa de vetor de string, pode tbm usar uma mapa de vetor de struct, e pode usar ate um mapa de mapa de vetor de string mais isso voce tem que descobrir como fazer sozinho pode usar template tbm pra ter mapas e vectores que possam assumir varios tipos, só pra naum deixar na curiosidade aqui vai um exemplo de mapa de vetor de struct
é isso ae espero q ajude alguem t++
Código: [Selecionar]
#include <iostream>
#include <map>
#include <vector>
#include <string>
int main(){
std::map< std::string, std::string > MyMap; //aqui criamos o map
/*aqui criamos o iterator do map para podermos navegar pelo mapa */
std::map< std::string, std::string >::iterator MyIterMap;
std::vector< std::string > MyVector; //criamos o vetor
/*aqui iniciamos o iterator pro vetor lembrando que sempre o iterator tem q ser igual o vetor entaum se seu vetor é std::vector<int> o iterator tbm tem q ser std::vector<int>::iterator de int*/
std::vector< std::string >::iterator MyIterVector;
MyVector.push_back("vetor1");
MyVector.push_back("vetor2");
MyVector.push_back("vetor3");/* aqui adicionas no final do vetor os valores*/
MyMap["Teste1"] = "map1";
MyMap["Teste2"] = "map2";
MyMap["Teste3"] = "map3";/*aqui adiconamos valores no mapa*/
/*agora vamos imprimir os conteudos do vetor e do mapa usando os iteratores */
MyIterVector = MyVector.begin(); //aqui colocas o iterator no começo do vetor
MyIterMap = MyMap.begin(); //aqui a mesma coisa
while( MyIterVector != MyVector.end() ) /* enquanto o iterator for diferente do final do vetor ele vai imprimir o resultado */
{
std::cout << *MyIterVector<<std::endl;
MyIterVector++; //aqui passamos o iterator pra proxima posição
}
while( MyIterMap != MyMap.end() ) //aqui a mesma coisa
{
/* aqui pegamos o primeiro valor do map ou seja o valor MyMap["teste1"] esse valor pra podermos imprimir seu valor que é "map1" */
std::string values = (*MyIterMap).first;
std::cout << MyMap[values] <<std::endl;
MyIterMap++;
}
return 0;
}
resultadoCódigo: [Selecionar]
vetor1
vetor2
vetor3
map1
map2
map3
Agora vcs devem estar se pergutando eu posso usar um map com vetor a resposta é sim voce pode usar um std::map< std::string, std::vector<std::string> > que é um mapa de vetor de string, pode tbm usar uma mapa de vetor de struct, e pode usar ate um mapa de mapa de vetor de string mais isso voce tem que descobrir como fazer sozinho pode usar template tbm pra ter mapas e vectores que possam assumir varios tipos, só pra naum deixar na curiosidade aqui vai um exemplo de mapa de vetor de struct
Código: [Selecionar]
#include <iostream>
#include <map>
#include <vector>
#include <string>
struct di
{
std::string query;
int length;
};
int main()
{
std::map< std::string, std::vector< di > > teste;
std::map< std::string, std::vector< di > >::iterator iter;
std::vector< di >::iterator viter;
di diego;
diego.query ="diego";
diego.length = strlen("diego");
teste["teste1"].push_back( diego );
std::cout << teste["teste1"][0].length <<std::endl;
diego.query = "rocha";
diego.length = strlen("rocha");
teste["teste2"].push_back( diego );
iter = teste.begin();
while( iter != teste.end())
{
std::string valor = (*iter).first;
viter = teste[valor].begin();
while( viter != teste[valor].end())
{
std::cout << (*viter).query <<" "<<(*viter).length<<std::endl;
viter++;
}
iter++;
}
return 0;
}
resultadoCódigo: [Selecionar]
5
diego 5
rocha 5
é isso ae espero q ajude alguem t++