std::remove 함수는 제거 대상이 존재하지 않으면 vec.end()를 반환한다.
이 경우 erase의 단일 요소 제거 버전을 호출하면 정의되지 않은 동작이 발생할 수 있다.
범위 버전을 사용하면 반환된 new_end부터 vec.end()까지의 빈 범위가 안전하게 처리된다.
따라서 아래와 같이 수정하는 것이 좋다.
vec.erase(std::remove(vec.begin(), vec.end(), target), vec.end());
.
'TIL' 카테고리의 다른 글
UE Actor 라이프사이클 (0) | 2025.03.21 |
---|---|
매크로와 RTTI (0) | 2025.03.20 |
World Grid 렌더링 최적화: 두 가지 접근 방식 (0) | 2025.03.18 |
FName (0) | 2025.03.18 |
Today I Learned (0) | 2025.02.24 |