Resumo dos métodos de eliminação de vetores

Resumo dos métodos de eliminação de vetores

O vetor claro tem dois significados

Significado 1: apenas limpar o conteúdo, não recuperar espaço

Significado 2: limpar conteúdo e recuperar espaço

Dê uma olhada neste código:

#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;
}

Olhe para esta saída novamente:

Insira a descrição da imagem aqui

obter conclusão:

Se o objeto processado for um vetor, você só precisa usar a função clear () para limpar o conteúdo. Se for um boneco multi-vetor, preste atenção em dois pontos: Primeiro: declare o tamanho da linha ao declarar, caso contrário não lhe dará espaço e causará um erro de execução! Segundo: pegue cada vetor [i] e limpe para concluir a remoção do conteúdo do vetor.

Se você deseja recuperar espaço, a solução elegante é trocá-lo por um vetor vazio! Mas preste atenção, a menos que esse vetor não seja mais usado posteriormente, é melhor não fazer isso. Esse tipo de método de reciclagem deve ser colocado em um local adequado, pois é uma forma de liberar a memória, e a memória precisa ser realocada para usá-la novamente após o lançamento, o que por si só também é uma maneira cara.

Acho que você gosta

Origin blog.csdn.net/qq_44274276/article/details/108127918
Recomendado
Clasificación