05 septiembre 2023

Revolviendo un vector en C++

Hace tiempo escribí sobre cómo usar vectores en C++ y como usar iteradores. Sin embargo, el otro día quise "revolver" (hacer un shuffle) a un vector y se me complicó un poquito encontrar la solución.

En Java existe Collections.shuffle y quería algo similar para un vector. Y, después de experimentar un rato y leer varias páginas, encontré que existe una función shuffle que recibe dos iteradores (del inicio y final del vector) y un motor de generador de números aleatorios. Aquí les dejo el ejemplo simple que hice:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
/* ***
 * AzarVector.cpp - Ejemplo de cómo "revolver" un vector en C++
 * ***/
 
#include <vector>		// Para usar el vector
#include <iostream>	
#include <random>		// Para el default_random_engine
#include <algorithm>	// Para el shuffle

using namespace std;

int main() {
	vector<int> lista;
	
	// Lleno la lista
	cout << "Llenando el vector con 100 enteros...\n";
	for (int i=0;i<100;i++) {
		lista.push_back(i);
	}
	
	// Muestro la lista
	cout << "\nLos elementos dados de alta...\n";
	for (int i : lista) {
		cout << i << endl;
	}
	
	// "Revuelvo" la lista
	shuffle(lista.begin(),lista.end(),default_random_engine());
	
	// Muestro la lista
	cout << "\nLos elementos mezclados...\n";
	for (int i : lista) {
		cout << i << endl;
	}
}
Espero que esto les sirva en sus proyectos. ¡Saludos!

No hay comentarios.:

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...