c ++中向量的clear()和erase()方法之间的区别?

use*_*909 0 c++ stl

以下是我的程序的主要功能,我找不到矢量的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();      
}


 }
Run Code Online (Sandbox Code Playgroud)

这里clear()没有产生预期的结果,但当我使用擦除时,我得到了理想的结果,为什么?

Kun*_*nal 12

clear()从向量中移除所有元素,留下大小为零的向量,同时从向量中erase()删除单个元素或一系列元素.