Блог пользователя hacker696969

Автор hacker696969, история, 6 лет назад, По-английски

Hello CF Community,

I am new to competitive programming and recently have been learning STL ,I wanted to ask that if i want to erase the smallest value and also keep on iterating, if I am writing the following code, I am getting garbage values.

I know that there are other ways to do this but I wanted a modification of my code ,and also I wanted to know that is it not possible to traverse set while simultaneously erasing elements.

Code
  • Проголосовать: нравится
  • -6
  • Проголосовать: не нравится

»
6 лет назад, скрыть # |
 
Проголосовать: нравится +16 Проголосовать: не нравится

Your code isn't working because of it++. You are trying to increment an iterator to the erased element.

But it's possible to change your code:

set <int> s;
s.insert(1); s.insert(2); s.insert(3);
for(auto it = s.begin(); it != s.end();) {
    cout << *it << endl;
    it = s.erase(it);
}
»
6 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

This will work I guess.

Spoiler