Résumé des méthodes d'élimination des vecteurs

Résumé des méthodes d'élimination des vecteurs

Le vecteur clair a deux significations

Signification 1: Seulement du contenu clair, pas de récupération d'espace

Signification 2: Effacer le contenu et récupérer de l'espace

Jetez un œil à ce code:

#include <iostream>
#include <vector>
using namespace std;

struct Edge {
    
    
	int v, d;
};

int main() {
    
    
	cout << "****************一维vector***************" << endl;
	Edge e = Edge({
    
     1, 2 });
	vector<Edge> Ve1;
	for (int i = 0; i < 5; ++i)
		Ve1.push_back(e);
	cout << Ve1.size() << ' ' << Ve1.capacity() << endl;
	Ve1.clear();
	cout << Ve1.size() << ' ' << Ve1.capacity() << endl;
	vector<Edge>().swap(Ve1);
	cout << Ve1.size() << ' ' << Ve1.capacity() << endl;

	cout << "****************二维vector***************" << endl;
	vector<vector<Edge> > Ve2(10);
	for (int i = 0; i < 10; ++i) {
    
    
		for (int j = 0; j < 10; ++j)
			Ve2[i].push_back(e);
	}
	cout << Ve2.size() << ' ' << Ve2.capacity() << endl;
	for (int i = 0; i < 10; ++i)
		Ve2.clear();
	cout << Ve2.size() << ' ' << Ve2.capacity() << endl;
	vector<vector<Edge> >().swap(Ve2);
	cout << Ve2.size() << ' ' << Ve2.capacity() << endl;
	return 0;
}

Regardez à nouveau cette sortie:

Insérez la description de l'image ici

obtenir la conclusion:

Si l'objet traité est un vecteur, il vous suffit d'utiliser la fonction clear () pour effacer le contenu. S'il s'agit d'une poupée multi-vectorielle, deux points doivent être pris en compte: d'abord, la taille de la ligne doit être déclarée lors de la déclaration, sinon cela ne vous laissera pas d'espace et cela provoquera une erreur d'exécution! Deuxièmement: obtenez chaque vecteur [i], puis effacez pour terminer la suppression du contenu vectoriel.

Si vous souhaitez récupérer de l'espace, la solution élégante est de l'échanger avec un vecteur vide! Mais attention, à moins que ce vecteur ne soit plus utilisé plus tard, mieux vaut ne pas le faire. Ce type de méthode de recyclage doit être placé dans un endroit approprié, car c'est un moyen de libérer la mémoire, et la mémoire doit être réallouée pour la réutiliser après la sortie, ce qui est également un moyen coûteux.

Je suppose que tu aimes

Origine blog.csdn.net/qq_44274276/article/details/108127918
conseillé
Classement