J'ai un morceau de code critique de performance écrit avec des pointeurs et de la mémoire dynamique. Je voudrais le réécrire avec des conteneurs STL, mais je suis un peu préoccupé par la performance. Existe-t-il un moyen d'augmenter la taille d'un conteneur sans initialiser les données?Comment faire pour changer la taille du conteneur STL en C++
Par exemple, au lieu de faire
ptr = new BYTE[x];
Je veux faire quelque chose comme
vec.insert(vec.begin(), x, 0);
Cependant, cette initialise chaque octet à 0. N'est-il un moyen de simplement faire le vecteur grandir ? Je connais reserve() mais il ne fait qu'allouer de la mémoire, il ne change pas la taille du vecteur, et ne me permet pas d'y accéder avant d'avoir inséré des données valides.
Merci à tous.
pourquoi voudriez-vous accéder à quelque chose qui ne contenait pas de données valides? –
Cela ne devrait pas vous intéresser. 'std :: vector' est un tableau à usage général. Si vous avez besoin de vitesse brute, ce n'est pas fait pour ça (même si vous avez été suffisamment rapide pour tout ce que j'ai déjà utilisé). Vous devriez faire cuire votre propre récipient alors que vous vous souciez de ne pas inutilement initialiser les éléments. –
Je dois passer un tampon à une API qui me dit combien d'espace j'ai besoin. Donc, dans l'ancien langage C, et symplifiant un peu, c'est: sz = GetSizeNeeded(); buf = malloc (sz); GetBuffer (buf); – raven