之后我如何做 ?才能让程序占用内存和在这段循环之前的一样多呢?

main()
{
vector<double>it;
double a[100000];
for(int i=0;i<100000;i++)
{
a[i]=i;
}
for(int i=0;i<100000;i++)
{
it.push_back(a[i]);
}
return 0;
}

在 for(int i=0;i<100000;i++)
{
it.push_back(a[i]);
}

凤凰求蛊
浏览 126回答 2
2回答

慕姐4208626

it.clear();把里面的元素删掉,内存就还回去了如果你是想把数组的内存还回去,你开始的时候就double* a = new double[100000];然后delete a[];

拉风的咖菲猫

光clear是不释放内存的,将你这段代码修改了一下,你看看,应该能明白了,不明白运行一下就知道了。#include <vector>#include <iostream>using namespace std;main(){vector<double>it;double a[100000];for(int i=0;i<100000;i++){a[i]=i;}cout << "未放元素时容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //未放元素for(int i=0;i<100000;i++){it.push_back(a[i]);}cout << "放元素后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //放元素it.clear();cout << "clear后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //clearvector<double>().swap(it);cout << "swap后容器大小为: " << it.size() << "容器容量为: " << it.capacity() << endl; //swapreturn 0;}运行结果:未放元素时容器大小为: 0容器容量为: 0放元素后容器大小为: 100000容器容量为: 131072clear后容器大小为: 0容器容量为: 131072swap后容器大小为: 0容器容量为: 0
打开App,查看更多内容
随时随地看视频慕课网APP