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

时间:2013-10-13 17:19:29

标签: 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();      
}


 }

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

擦除需要一个参数 - 要删除的东西。明确转储了这个地段。

根据手册http://en.cppreference.com/w/cpp/container/vector