Разница между методами clear () и erase () вектора в c ++?

0

Следующее является основной функцией моей программы, я не мог найти разницы между 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() не дает желаемых результатов, но когда я использую стирание, я получаю желаемые результаты, почему?

Теги:
stl

2 ответа

10

clear() удаляет все элементы из вектора, оставляя за собой вектор нулевого размера, а erase() удаляет один или несколько элементов из вектора.

  • 1
    Этот ответ с таким большим количеством откликов заставляет меня задуматься, а не является ли это хорошим вопросом для переполнения стека.
2

Erase принимает параметр - вещь для стирания. ясные свалки.

Согласно руководству http://en.cppreference.com/w/cpp/container/vector

Ещё вопросы

Сообщество Overcoder
Наверх
Меню