Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre una variante de array.

Anuncios

En el post anterior dijimos que los array no solamente eran simples de crear sino que tenian el inconveniente de un tamaño fijo, vector se diferencia de los array justamente porque permite modificar el tamaño de estos, despues son significativamente similares pero con algunas diferencias, si tenemos que hacer un paralelismo con C# este tipo es mas parecido a List, tambien nos permite utilizar genericos como tipo, pasemos a ver la primera forma de crearlo:

let mut mi_vector: Vec<f32> = Vec::new();
Anuncios

Esta es su forma de definicion mas explicita, otra forma es:

let mut mi_vector = vec![4i32, 2, 4, 8, 16];
Anuncios

Si observan en el primer campo definimos no solamente el tamaño de nuestro vector sino tambien el tipo de dato que recibira, despues iran los valores para cada posicion pero como mencionamos al hablar de las variables no es necesario informar el tipo de dato dado que puede ser determinado por el lenguaje, tambien podemos crear uno donde solo le definamos el tamaño:

let mut mi_vector: Vec<i64> = Vec::with_capacity(30);
Anuncios

En este caso crearemos un vector de tipo int de 64 bits y mediante el metodo with_capacity le asignaremos un tamaño de 30 posiciones, trabaja de forma muy similar al visto en este post dado que definira la cantidad de informacion que podremos almacenar.

Anuncios

Por ultimo podemos crear un vector por medio de un iterador, en este caso el iterador es el metodo collect, para utilizarlo se debe hacer de la siguiente manera:

let mi_vector: Vec<u64> = (0..10).collect();
Anuncios

En este caso como establecimos un comienzo, el valor 0, y un final, valor 10, el iterador al encontrar este rango nos comenzara a llenar el vector con los valores del 0 al 9, habitualmente en todos los lenguajes el ultimo valor se establece como limite y siempre lo hacen hasta el valor anterior, tengan eso en cuenta a la hora de crear estos iteradores, pero retomando el ejemplo esta es una forma muy practica de generar uno que sabemos que debe contener esos valores, para entender mas este concepto vamos a ver un ejemplo.

Anuncios

Para crear el nuevo proyecto vamos a utilizar el siguiente comando:

cargo new vectores
Anuncios

Una vez creado vamos a reemplazar el codigo generado en main.rs por el siguiente:

main.rs

fn main() {
    	let mi_vector: Vec<i32> = (0..5).collect();

	println!("{} {} {} {} {}", mi_vector[0], 
				mi_vector[1], 
				mi_vector[2], 
				mi_vector[3], 
				mi_vector[4]);
}
Anuncios

Este es un ejemplo simple pero practico, donde primero crearemos un Vector por medio del iterador collect, y le pasamos un rango de 5 numeros, luego por medio de println recuperamos las cinco posiciones que creamos con el iterador, compilemos y veamos su salida:

tinchicus@dbn001vrt:~/lenguajes/rust/vectores$ cargo build; cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/vectores`
0 1 2 3 4
tinchicus@dbn001vrt:~/lenguajes/rust/vectores$
Anuncios

Esto es solo una forma practica de ver como crear y recuperar los elementos de un Vector, mas adelante al igual que en el caso de los arrays iremos implementando mejores metodos para utilizarlos, tambien a medida que vayamos avanzando iremos decidiendo que es mas practico o necesario para nuestros codigos ya sea implementar un array o un vector pero hasta aca tenemos la base de como trabajan.

Anuncios

En resumen, hoy hemos visto Vector, sus mejores con respecto a los array, como crearlas, como recuperar su informacion, y un ejemplo practico para verlo en accion, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50

Anuncio publicitario