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:
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.