Quelles sont les différences entre un tableau et un vecteur en C++? Un exemple des différences peuvent inclure les bibliothèques, la symbolique, les capacités, etc.
Tableau
Les tableaux contiennent un nombre spécifique d'éléments d'un type particulier. Ainsi, le compilateur peut réserver l'espace nécessaire lorsque le programme est compilé, vous devez spécifier le type et le nombre d'éléments que le tableau contiendra lors de sa définition. Le compilateur doit être en mesure de déterminer cette valeur lors de la compilation du programme. Une fois qu'un tableau a été défini, vous utilisez l'identifiant du tableau avec un index pour accéder à des éléments spécifiques du tableau. [...] les tableaux sont indexés à partir de zéro; c'est-à-dire que le premier élément est à l'index 0. Ce schéma d'indexation est indicatif de la relation étroite en C++ entre les pointeurs et les tableaux et les règles que le langage définit pour l'arithmétique des pointeurs.
— Référence de poche C++
Vecteur
Un vecteur est une séquence dynamique de objets qui fournit un accès aléatoire à la style tableau via l'opérateur
operator[]
. La fonction membrepush_back
copie ses arguments via le constructeur de copie, ajoute cette copie en tant que dernier élément dans le vecteur et incrémente sa taille de un.pop_back
fait exactement le contraire, en supprimant le dernier élément. Insérer ou supprimer des éléments de la fin d'un vecteur prend du temps constant amorti, et insérer ou supprimer à partir d'un autre emplacement prend du temps linéaire. Ce sont les bases des vecteurs. Il y a beaucoup plus à savoir sur eux. Dans la plupart des cas, un vecteur devrait être votre premier choix sur un tableau de style C. Tout d'abord, ils ont une taille dynamique, ce qui signifie qu'ils peuvent grandir selon les besoins. Vous n'avez pas à faire toutes sortes de recherches pour trouver une taille statique optimale, comme dans le cas des tableaux C; un vecteur grandit selon les besoins, et il peut être redimensionné manuellement en plus grand ou plus petit si nécessaire. Ensuite, les vecteurs offrent une vérification des limites avec la fonction membreat
(mais pas avec l'opérateuroperator[]
), de sorte que vous pouvez faire quelque chose si vous référencez un index inexistant au lieu de simplement voir votre programme planter ou pire, continuer l'exécution avec des données corrompues.— Livre de cuisine C++