quarta-feira, 11 de fevereiro de 2009

Artigo: Criando funções com Templates.

Estamos acostumados a criar função para determinados tipos que ja sabemos que serão usados. Mas quando precisamos escrever funções mais genéricas necessitamos utilizar template.
Esta é uma função para ordenar valores em ordem ascendente.
Para a ordenação utilizei o método bubble sort. Não aconselho utilizá-lo para grandes quantidades de valores.


Abaixo segue o exemplo:



template <class T>
void ordenar(T valores[], int controle)
{
for(int i=0; i<controle; i++)
{
for(int j=i+1; j<controle; j++)
{
if(controle[i] > controle[j])
{
T temp = controle[i];
controle[i] = controle[j];
controle[j] = controle[i];
}
}
}
}

Repare no template antes do tipo de retorno e nome da função, é ele que indica que existirá um valor ainda não definido, e então você pode utilizar esse tipo T como se fosse um tipo qualquer, pode declarar uma variável, pode passar esse tipo como parâmetro, etc.

Agora você pode utilizar sua função com diferentes tipos:

void main()
{
int inteiros[] = {7, 4, 8, 1, 2};
double doubles[] = {3.4, 2.3, 9.8, 1.2};
ordenar(inteiros, 5);
ordenar(doubles, 4);

for(int i=0; i<5; i++)
cout << inteiros[i] << " ";
cout << endl;
for(int i=0; i<4; i++)
cout << doubles[i] << " ";
cout << endl;
}

Tome cuidado quando utilizar template, teste no caso de array de chars, veja que não daria certo, quando for assim faça uma sobrecarga de função, e passe como parâmetro um array de char.

Até a próxima.

Nenhum comentário:

Postar um comentário