본문 바로가기

TIL

std::vector erase, std::remove 관련

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