후위증가 연산

pok의 이미지

Effective STL 중, map 에서 지우기를 보면 이런구문이있습니다.

AssocContainer<int> c;
...
//함수자
bool badValue(int x);
for(AssocContainer<int>::iterator it = c.begin(); it != c.end(); /* 없음 */)
{
    if(badValue(*it)) c.erase(it++);
    else ++it;
}

글을 읽어 보면 erase에는 증가되기 전의 it 를 넘기고, erase가 수행되기 전에 it를 증가 시킨다고 되어 있습니다.

왜 그런가요? C에서 시퀀스 포인트 개념이 C++에서도 완전히 동일하게 적용되는 것인가요?

winner의 이미지

그렇습니다.

전웅의 이미지

전위/후위 증감 연산자의 의미 차이와 sequence point 는
아무 관계 없습니다.

--
Jun, Woong (woong at icu.ac.kr)
Web: http://www.woong.org (서버 공사중)

--
Jun, Woong (woong at gmail.com)
http://www.woong.org

doldori의 이미지

아마 함수 호출 직전의 sequence point를 말씀하신 듯 합니다.
그런 의미라면 C나 C++이나 같습니다.