以下是我的程序的主要功能,我找不到矢量的clear()和erase()之间的任何区别,那么为什么在下面的代码中我得到不同的结果 当我使用erase()而不是clear()?
int main()
{
int notest, N, temp;
long long sum, profit;
int count;
vector<int> S;
S.reserve(50009);
cin>>notest;
for(int test=0; test<notest; test++)
{
profit = 0;
cin>>N;
for(int i=0; i<N; i++)
{
cin>>temp;
S.push_back(temp);
}
DO SOME THING HERE
S.clear();
}
}
这里clear()没有产生预期的结果,但是当我使用擦除时我得到了理想的结果,为什么?
答案 0 :(得分:12)
clear()
从向量中删除所有元素,留下大小为零的向量,而erase()
从向量中删除单个元素或一系列元素。
答案 1 :(得分:2)
擦除需要一个参数 - 要删除的东西。明确转储了这个地段。