1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    vector<int> vecN;
    vector<int>::iterator iter = vecN.begin();
 
    vecN.push_back(1);
    vecN.push_back(2);
    vecN.push_back(3);
  vecN.push_back(4);
    for (; iter != vecN.end(); ++iter)
    {
        if (*iter == 2)
        {
            vecN.erase(iter);
 
            //break;
        }
    }
cs




저걸 update() 함수에서 매 프레임마다 호출해준다고 할 때,


브레이크를 걸어주면 상관없는데


안걸면 터집니다. 보니까 이레이즈를 하면, iter에 다음 원소의 이터레이터가 들어가는데


for문으로 올라가서 내려가는 코드에서 터져버림



제가 이해한건 반복문 안의 조건에 걸리면 벡터 원소 2를 이레이즈 해주고 


백터의 원소 3의 이터레이터가 iter에 들어가 있는 것 같은데


for문 증가하는 곳 ++iter를 만나면, iter가 벡터 원소 4의 이터레이터가 되지 않고 터져버림




터지는 정확인 이유가 뭐예요?