우리 (모두) 알고, 반복자에 의해 요소, 포인터를 삭제하면, 예를 들어 반복자, 무효 : 무엇에 대한std :: map :: begin을 사용하여 std :: map :: erase를 호출하는 것이 안전합니까?
std::map<..> map_;
std::map<..>::iterator iter;
// ..
map_.erase(iter); // this will invalidate `iter`.
하지만, :
map_.erase(map_.begin());
이 안전을? map_.begin()
은 (새로운) 맵의 첫 번째 요소를 가리키는 유효한 반복자입니까?
"테스트하기"는 해결책이 아닙니다.
아하 (Aha)는 이런 식으로 생각합니다. "begin()은 반복자가 아니고 반복자를 반환합니다." –