Ir ao conteúdo
  • Cadastre-se

Dúvida sobre vetores.


claudio.g.chepa

Posts recomendados

Boa tarde pessoal. Estou com uma dúvida sobre vetores em C++ e gostaria que me judassem a entender, por favor. O código abaixo funciona perfeitamente e faz o seguinte. Ele lê um arquivo de texto que contém números de 0 até 99, estes números estão em forma de tabela e tem 6 colunas e o número de linhas é variável. Então ele lê esse arquivo transforma os caracteres lidos em inteiros e os passa para uma matriz de inteiros. A matriz é feita da seguinte forma, primeiro aloquei um vetor de vetores,"vector< vector<int> > matriz" global. Montei a matriz dessa forma porque só quero ler o arquivo uma única vez e a única coisa que sei é que ele tem 6 colunas, mas não sei quantas linhas ele tem, então o jeito foi criar um vetor do tipo "vector" e ir usando o método "push_back". Dito isso, a minha dúvida está abaixo, no código.

vector< vector<int> > matriz;

void limparquivo(void)
{

ifstream arquivo("d:/Texts/tabela.txt");

vector<int> numero(2,0);
vector<int> coluna(6,0);

int i =0;
int col =0;
char carac;

if( arquivo.is_open() )
{
while( arquivo.good() )
{
carac = arquivo.get();
//Abaixo é só um esqueminha que eu criei para transformar caracteres em inteiros
de 2 dígitos.
if( carac >= 48 && carac <= 57 )
{
numero[i] = carac;
i++;
}
if( i == 2 )
{
coluna[col] = ((numero[0]-48)*10) + (numero[1]-48);
i =0;
col ++;
}
if( col == 6 )
{
//Abaixo "matriz" recebe o vetor "coluna" e zera apenas o seu índice o vetor
permanece o mesmo e que eu saiba com o mesmo endereço. O que não entendo é como
"matriz" guarda esses valores corretamente se o vetor "coluna" é o mesmo, só
estou substituindo seus elementos. Eu achei que para cada nova linha de "matriz"
eu teria que alocar um novo vetor de "coluna" para que ele tivesse um novo
endereço e então "matriz" apontar para este novo vetor.
matriz.push_back(coluna);
col =0;
}
}
}
else
{
cout<<"Arquivo nao encontrado."<<endl;
}

arquivo.close();

}

Obrigado.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...