• Olá Visitante, se gosta do forum e pretende contribuir com um donativo para auxiliar nos encargos financeiros inerentes ao alojamento desta plataforma, pode encontrar mais informações sobre os várias formas disponíveis para o fazer no seguinte tópico: leia mais... O seu contributo é importante! Obrigado.

Iteradores Conceito De Contentor

Serr@no™

GF Ouro
Membro Inactivo
Entrou
Set 23, 2006
Mensagens
1,690
Gostos Recebidos
0
Já tinha dado uma breve introdução aos iteradores quando falei do objecto string, agora dá-me jeito aprofundar mais esse conceito antes de introduzir a STL. Quem não tiver visto a introdução que fiz, convém que o faça agora.
O iterador que aqui vou deixar é muito simples e serve para iterar todos os números pares. Não encontro nenhum exemplo prático para este iterador, mas penso que servirá para demonstrar o quão versátil pode ser um iterador.
class ParIter {
// valor corrente do iterador
int value;


public:
// usando este construtor pode-se fazer
// ParIter a(10); em que value ficarA com 10
// ou ParIter a; em que value ficarA com 0
ParIter( int v = 0 ) : value(v) {
// caso algum nabo inicialize value com
// um nUmero impar, muda-se value para o nUmero par anterior
if( value%2 )
--value;
}


/*
o operator ++ farA com que o ParIter avance para o prOximo
valor vAlido, para o prOximo par */
ParIter operator++() { return value+=2; }
ParIter operator++(int)
{ ParIter aux=*this; ++(*this); return aux; }


ParIter operator--() { return value-=2; }
ParIter operator--(int)
{ ParIter aux=*this; --(*this); return aux; }


// operador desreferência
int operator*() { return value;}
};
Os iteradores são mais usados para fazer a ligação entre o programador e o contentor. Desta forma torna-se mais fácil a utilização de contentores diferentes, pois podem percorrer-se com um for todos da mesma maneira.
 

Serr@no™

GF Ouro
Membro Inactivo
Entrou
Set 23, 2006
Mensagens
1,690
Gostos Recebidos
0
Contentores

Em programação enfrentamos muito o problema de armazenar os dados de uma forma eficiente e útil. Até agora só falei do array, que como tudo, tem vantagens e desvantagens. Outro contentor muito usado e badalado é a lista. Por último basta referir as árvores.
O conceito de array já deve estar apreendido, o que vou fazer agora é dar uma breve introdução aos outros tipos de contentores.
Lista - tem vantagem de se poder inserir e remover qualquer elemento com uma rapidez enorme, contudo, não pode ser indexada. A lista são um conjunto de nós ligados entre si: sent->a->b->c->d->sent, em que sent é o mesmo nó. Este mini exemplo seria uma lista simplesmente ligada. Para inserir ou remover bastaria efectuar uma troca de apontadores.
Árvore: Uma árvore representa-se como aquelas árvores genelógicas que tão bem conhecemos. Devem ser usadas principalmente quando se quer realizar acções de procura, pois pela forma como estão organizadas, é muito mais rápido encontrar um elemento numa árvore do que num vector. E nas listas ainda é muito mais lento...
Estes contentores têm muita teoria associada... passei um semestre a estudá-los! O que deixo aqui são algumas propriedades, pelo que aconselho que procurem na net informações sobre listas e árvores.
 
Topo