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