J'utilise diverses structures de données dans ma programmation et je transférais souvent des données d'une structure à une autre.
// assume that I want to transfer all data from v to Q
vector <int> v = {1, 2, 3, 4};
queue <int> Q;
for(int item : v){
Q.push(item);
}
// after this point, v is no longer used
3 Réponses :
Non, ce serait complètement inutile.
Au lieu de cela, minimisez la portée de vos variables aux endroits où vous en avez besoin, de sorte que vous ne peut pas em> accidentellement Utilisez-les après que vous aviez l'intention de; Votre construction échouera. p> Faites cela avec des fonctions (préférables) ou avec des panneaux de blocs supplémentaires: P> queue <int> Q;
{
vector <int> v = {1, 2, 3, 4};
for(int item : v){
Q.push(item);
}
}
Euh, y a-t-il une raison pour laquelle vous ne mettez pas q à l'intérieur de la portée du bloc? Pour que son DTor soit appelé à la fin de celui-ci?
@HotelCalifornie Parce que vous ne seriez pas en mesure de l'utiliser après avoir effectué la copie ... Le principe de la question est que q code> continue à être utilisé, alors que v code> ne fait pas.
Oh bien sûr. Manqué que v était la cible du nettoyage
Il n'y a aucun point de faire ça. P>
Si vous allez réutiliser le code> vectoriel code>, juste v.cclear () code> C'est d'abord ou envisagez de refactoriser la fonction s'il est déroutant de connaître l'état des variables dans la portée actuelle. P>
Non. Lorsque le vecteur est hors de portée, les données seront «parties» de toute façon. P>
Si votre plus à propos de ici . P> Vecteur code> est utilisé dans une étendue plus large, vous pouvez utiliser la méthode strink_to_fit code> qui réduit la capacité du vecteur code> et donc libère une mémoire supplémentaire. P>