2

以下是我程序的主要功能,我找不到vector的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() 没有产生想要的结果,但是当我使用擦除时,我得到了想要的结果,为什么?

4

2 回答 2

13

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

于 2013-10-13T17:21:09.440 回答
2

Erase 有一个参数——要擦除的东西。清除转储很多。

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

于 2013-10-13T17:22:58.610 回答