Comprendre la taille du vecteur en C
En C, la structure des données vectorielles est un tableau dynamique qui peut automatiquement ajuster sa taille à mesure que des éléments sont ajoutés ou supprimé. Cependant, lorsque vous travaillez avec des vecteurs, il est essentiel de comprendre le comportement de size() lorsque le vecteur est vide.
Pourquoi size() - 1 n'est pas -1 pour un vecteur vide
Considérez l'extrait de code fourni :
#include <vector> #include <iostream> using namespace std; int main() { vector<int> value; cout << value.size() << endl; // output 0 cout << value.size() - 1 << endl; // output 18446744073709551615 }
La première sortie, 0, représente correctement le nombre d'éléments dans le vecteur vide. Cependant, la deuxième sortie, qui soustrait 1 à la taille, est inattendue car elle renvoie un grand entier non signé au lieu de -1.
La raison derrière ce comportement réside dans le type de size_t utilisé dans vector::size (). size_t est un type entier non signé conçu pour stocker le nombre d'éléments dans un vecteur. Les entiers non signés ne peuvent pas représenter des nombres négatifs, donc toute tentative de soustraire 1 de 0 entraînera une grande valeur entière non signée.
Conclusion
Il est important de se rappeler que size_t est un type non signé et ne peut pas représenter de nombres négatifs. Lorsque vous travaillez avec des vecteurs, tenez toujours compte du potentiel de grandes valeurs entières non signées lorsque vous soustrayez 1 de la taille d'un vecteur vide.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!