Maison >développement back-end >C++ >`std::vector::reserve()` vs `std::vector::resize()` : quand dois-je utiliser lequel ?

`std::vector::reserve()` vs `std::vector::resize()` : quand dois-je utiliser lequel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-18 02:11:15728parcourir

`std::vector::reserve()` vs. `std::vector::resize()`: When Should I Use Which?

std::vector::resize() vs. std::vector::reserve()

Lorsque vous travaillez avec des tableaux dynamiques dans C , il est important de comprendre la différence entre std::vector::reserve() et std::vector::resize(). Les deux servent à des fins spécifiques et peuvent avoir un impact significatif sur les performances.

std::vector::reserve()

Comme son nom l'indique, reserve() réserve de la mémoire pour un nombre d'éléments sans modifier la taille du vecteur. Ceci est utile pour optimiser l'allocation de mémoire si vous connaissez le nombre maximum d'éléments dont vous aurez besoin. Cela évite les réallocations inutiles qui se produisent lorsque le vecteur croît au-delà de sa capacité actuelle.

std::vector::resize()

D'un autre côté, resize() les deux réservent de la mémoire et redimensionnent le vecteur à la taille spécifiée. Contrairement à reserve(), si la nouvelle taille est supérieure à la taille actuelle, resize() ajoute des éléments vides (ou initialisés par défaut) au vecteur. Si la nouvelle taille est plus petite, les éléments au-delà de la nouvelle taille sont tronqués.

Utilisation correcte dans l'exemple

Dans votre exemple de code, vous essayez d'écrire des éléments au vecteur après avoir appelé reserve(). Cela entraînera des erreurs dans les versions de débogage car reserve() ne redimensionne pas le vecteur. Pour écrire correctement des éléments dans le vecteur, vous devez utiliser resize() :

void MyClass::my_method()
{
    my_member.resize(n_dim);
    for (int k = 0; k < n_dim; k++)
        my_member[k] = k;
}

Conclusion

Les deux std::vector::reserve() et std ::vector::resize() servent des objectifs distincts. reserve() optimise l'allocation de mémoire, tandis que resize() redimensionne le vecteur tout en conservant la validité interne des données. En comprenant leurs différences, vous pouvez les utiliser efficacement pour améliorer les performances de votre code C.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn