vectores intercalar intercalando elementos ejercicios concatenar combinar arreglos vector rust concatenation

intercalar - La mejor manera de concatenar vectores en Rust



intercalar dos vectores c++ (1)

La estructura std::vec::Vec tiene método append() :

fn append(&mut self, other: &mut Vec<T>)

Mueve todos los elementos de los other al Self , dejando other vacíos.

De su ejemplo, el siguiente código concatenará dos vectores mutando a y b :

fn main() { let mut a = vec![1, 2, 3]; let mut b = vec![4, 5, 6]; a.append(&mut b); assert_eq!(a, [1, 2, 3, 4, 5, 6]); assert_eq!(b, []); }

Alternativamente, puede usar Extend::extend() para anexar todos los elementos de algo que se puede convertir en un iterador (como Vec ) a un vector dado:

let mut a = vec![1, 2, 3]; let b = vec![4, 5, 6]; a.extend(b); assert_eq!(a, [1, 2, 3, 4, 5, 6]); // b is moved and can''t be used anymore

Tenga en cuenta que el vector b se mueve en lugar de vaciarse. Si sus vectores contienen elementos que implementan Copy , puede pasar una referencia inmutable a un vector para extend() en lugar de evitar el movimiento. En ese caso el vector b no se cambia:

let mut a = vec![1, 2, 3]; let b = vec![4, 5, 6]; a.extend(&b); assert_eq!(a, [1, 2, 3, 4, 5, 6]); assert_eq!(b, [4, 5, 6]);

¿Es incluso posible concatenar vectores en Rust? Si es así, ¿hay una manera elegante de hacerlo? Tengo algo como esto:

let mut a = vec![1, 2, 3]; let b = vec![4, 5, 6]; for val in &b { a.push(val); }

¿Alguien sabe de una mejor manera?