Comment réduire efficacement la capacité dans un std::vector
Si vous vous retrouvez avec un std::vector qui a une capacité excédentaire, vous vous demandez peut-être s'il existe un moyen de le réduire pour libérer de la mémoire. Bien qu'il n'existe pas de méthode directe pour cela, il existe une technique intelligente connue sous le nom de « astuce d'échange ».
L'astuce d'échange
Selon l'article 17 de Effective de Scott Meyers STL, vous pouvez utiliser l'astuce d'échange pour réduire la capacité excédentaire d'un vecteur. Voici comment cela fonctionne :
<code class="cpp">vector<Person>(persons).swap(persons);</code>
Après avoir effectué cet échange, le vecteur nommé « personnes » sera « réduit pour s'adapter », ce qui signifie que sa capacité sera réduite pour correspondre au nombre d'éléments qu'il contient.
Comment fonctionne l'astuce
Cette astuce profite du fait que le constructeur de copie du vecteur alloue uniquement la quantité de mémoire nécessaire pour les éléments copiés. En créant un nouveau vecteur avec le même nombre d'éléments que le vecteur d'origine, le constructeur de copie crée un nouveau vecteur avec une capacité plus petite.
La méthode swap échange ensuite le contenu et les capacités des vecteurs d'origine et des nouveaux. En conséquence, le vecteur d'origine se retrouve avec une capacité réduite.
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!