Vecteur et liste
Souvent source de confusion pour les programmeurs, les vecteurs et les listes sont des séquences utilisées dans les tableaux en C++ et en Java. Ces deux termes contiennent des adresses de tableaux, mais avec des méthodes différentes.
Ce qu’il faut savoir, c’est qu’un tableau est une « liste » qui contient tout ou partie des données, c’est-à-dire des nombres entiers, des nombres à virgule flottante ou des caractères, et qu’il est défini entre parenthèses.
En fait, les vecteurs et les listes agissent selon les instances. Examinons donc ces deux termes un par un.
Vecteurs
Les vecteurs sont utilisés dans la gestion des tableaux et l’accès aux éléments. Ici, vous pouvez accéder à n’importe quel élément de manière aléatoire en utilisant l’opérateur « ». Il devient donc facile de parcourir tous les éléments ou un élément spécifique à l’aide d’une opération vectorielle. Ainsi, si vous insérez un objet à la fin, au début ou au milieu, les vecteurs présentent un avantage car vous pouvez accéder à l’adresse aléatoire et y apporter des modifications. Cependant, les vecteurs sont un peu plus lents que les objets de type liste. Les vecteurs sont considérés comme des objets synchronisés, efficaces dans l’accès aléatoire, et ils contiennent correctement les données avec une liste synchronisée. Un vecteur est choisi chaque fois qu’il n’est pas nécessaire d’insérer ou de supprimer des données au milieu (liste) ou à l’avant (liste).
au milieu (liste) ou à l’avant.
Le nombre d’éléments d’un tableau peut varier considérablement.
Exemple :
vecteur V ;
V.insert(V.begin(), 3) ;
assert(V.size() == 1 && V.capacity()>= 1 && V == 3) ;
Listes
Les listes sont des « séquences doublement liées » qui permettent de les parcourir à la fois vers l’avant et vers l’arrière. Le temps nécessaire à l’insertion et à la suppression au début, à la fin et au milieu est constant. L’insertion et l’épissage entre des listes liées n’invalident aucune itération dans les éléments. Seule la suppression invalide l’itération. Elles ne sont pas synchronisées et ne sont donc pas accessibles de manière aléatoire. L’ordre des itérations peut changer en fonction de l’utilisateur, mais cela n’affecte pas les changements dans les éléments. Ils sont plus rapides que les vecteurs et sont idéaux pour l’insertion et la suppression au début, au milieu et à la fin des listes d’éléments.
Exemple : #include
#include
// définition du modèle de classe de la liste
….
int main()
{
int array = { 2, 6, 4, 8 } ;
std::list
std::list
Résumé :
1. Une liste n’est pas synchronisée alors qu’un vecteur l’est.
2. Les listes n’ont pas de taille par défaut alors qu’un vecteur a une taille par défaut de 10.
3. Les listes et les vecteurs sont tous deux des tableaux à croissance dynamique.
4. Une liste n’est pas sûre pour les threads alors qu’un vecteur l’est.
5. Les listes, étant donné qu’elles ne s’appliquent qu’à l’ajout et à la suppression à l’avant et à l’arrière, sont plus rapides, tandis que les vecteurs prennent plus de temps au niveau du processeur.
vecteurs sont plus gourmands en ressources processeur.
6. Un vecteur croît deux fois plus que sa taille, tandis qu’une liste diminue de moitié, c’est-à-dire de 50 %.