Fondamentalement pas. Les éléments du vecteur sont construits par défaut lors d'un redimensionnement (pour un entier, cela donne 0). En supposant que vous utilisez reserve() pour vous assurer que resize() n'attribue pas de mémoire, je ne m'en soucierais pas, à moins qu'il ne s'agisse d'un problème de performance par la suite.
Si vous êtes concerné, vous pouvez envisager d'utiliser une matrice régulière et de stocker le nombre d'éléments dans une variable distincte. Cela vous donnera la meilleure performance.
Mise à jour:
John a demandé:
est le constructeur vraiment garanti à zéro que la mémoire? Je pensais que était indéfini?
Oui et non. Les types primitifs (int, bool, float, etc) ont des constructeurs par défaut qui les initialisent à zéro. Toutefois, contrairement aux classes régulières ou aux structures, le compilateur ne les appelle pas automatiquement.
par exemple
int a; // uninitialized
int b = int(); // initialized to 0
Parce que vecteur :: Redimensionner utilise cette dernière forme lors de l'ajout d'éléments vous garantis que les éléments créés seront correctement initialisées à zéro. Cela est vrai pour toutes les collections STL qui créent implicitement des éléments.
Désolé, je ne comprends pas votre problème - pourriez-vous poster un échantillon de code? –