Si usted tiene una función que genera números/valores/instancias (ej: un generador de números aleatorios, o identificadores) puede usar el algoritmo
generate de la
STL para crear una secuencia de objetos. Por ejemplo, para generar 100 números (pseudo)aleatorios de 0 a 1:
#include <algorithm>
#include <vector>
double uniform_random()
{
return (rand() % 10001) / 10000.0;
}
int main()
{
std::vector<double> v(100);
std::generate(v.begin(), v.end(), uniform_random);
return 0;
}
El algoritmo
generate recibe dos iteradores (inicio y fin), y llama a la función especificada para cada una de las posiciones que recorre:
template<typename ForwardIterator, typename Generator>
void generate(ForwardIterator first, ForwardIterator last,
Generator gen)
{
for (; first != last; ++first)
*first = gen();
}
Los algoritmos de la STL son genéricos porque utilizan la
aritmética de punteros. Los iteradores sobrecargan los operadores para poder ser utilizados como punteros. Así un algoritmo puede ser utilizado con los contenedores de la STL (
vector) o con los viejos y tan queridos arreglos (y punteros) de C:
#include <algorithm>
double uniform_random()
{
return (rand() % 10001) / 10000.0;
}
int main()
{
double v[100];
std::generate(v, v+100, uniform_random);
return 0;
}
1 comments:
Ok muchas gracias, en verdad desde hace rato buscaba un blog que me diera un ejemplo de sdl. Si por favor puedes colocar mas ejemplos te lo agradecería muchisimo bye :P
Publicar un comentario en la entrada