Skip to content
Snippets Groups Projects
Unverified Commit 8b897417 authored by Vanille-N's avatar Vanille-N
Browse files

ajout: tableaux

parent 701f830d
No related branches found
No related tags found
No related merge requests found
......@@ -353,40 +353,39 @@ fn main() {
}
\end{lstlisting}
// Il est possible de déstructurer le tuple...
let (a, b, c) = t;
\section{Tableaux}
// ... ou bien de récupérer des éléments grâce à des index.
let s = t.1;
Comme pour les chaînes de caractères, les tableaux se présentent sous plusieurs formes.
println!("{} {} {} {}", a, b, c, s); // "1 Hello 3.4 Hello"
}
\end{lstlisting}
Tous peuvent être modifié avec \texttt{tab[i] = v;} (à condition bien sûr qu'ils
soient déclarés \texttt{mut}).
\vspace{.5cm}
\begin{itemize}
\item \texttt{Vec<Type>} : un tableau dynamique qui contient des éléments de type \texttt{T}.\\
Peut être redimensionné avec \texttt{push}.\\
Equivalent de \texttt{String} : un \texttt{String} est presque un
\texttt{Vec<char>} avec quelques méthodes en plus.\\~\\
D'ailleurs pour convertir de l'un à l'autre on dispose de\\
\texttt{let chaine: String = vecteur.iter().collect();}\\
\texttt{let vecteur: Vec<char> = chaine.chars().collect();}
\item \texttt{[Type; Taille]} (e.g. \texttt{[u64; 5]}) : un tableau de taille fixée connue.
\item \texttt{\&[Type]} : un tableau de taille fixée inconnue.\\
Équivalent de \texttt{\&str}.
\end{itemize}
Toute variable qui n'a pas de taille connue (vecteurs, chaîne de caractères...) sera stockée dans le tas.
Ici encore on peut dans une certaine mesure convertir d'un type à un autre.
\begin{lstlisting}[style=Rust, language=Rust]
fn main() {
// Tableau de 5 éléments de \textbf{i32}.
let array: [i32; 5] = [1, 2, 3, 4, 5];
// Pour les tableaux, il n'existe pas une façon unique de les représenter.
// Ainsi, on utilise \textbf{{:?}} permettant d'afficher dans un format de débug.
println!("{:?}", array); // "[1, 2, 3, 4, 5]"
let vector: Vec<usize> = vec![1, 2, 3];
let array: [usize; 3] = [1, 2, 3];
// Vecteur de \textbf{i32}.
// \textbf{vec!} permet d'initialiser des valeurs.
let mut vector: Vec<i32> = vec![1, 2, 3, 4];
let slice_of_full_vector: &[usize] = &vector;
let slice_of_partial_vector: &[usize] = &vector[..2];
let slice_of_full_array: &[usize] = &array;
// Ajout de la valeur \textbf{5} à la fin du vecteur.
vector.push(5);
// Slice d'un vecteur, cela fonctionne comme un slice d'une chaîne de caractères.
let slice: &[i32] = &vector;
println!("{:?} {:?}", vector, slice); // "[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]"
let vector_of_array = array.to_vec();
let vector_of_slice = &array[1..].to_vec();
}
\end{lstlisting}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment