더북(TheBook)

1.5.2 std::forward_list의 기타 멤버 함수

반복자로 원소 위치를 지정하여 삭제하는 erase() 함수 외에도 std::forward_list는 원소 값을 검사하여 삭제하는 remove()remove_if() 함수도 제공합니다. remove() 함수는 삭제할 원소 값 하나를 매개변수로 받습니다. 이 함수는 저장된 데이터 타입에 정의된 등호 연산자를 사용하여 전달된 값과 일치하는 모든 원소를 찾아 삭제합니다. 저장된 데이터 타입에서 등호 연산이 지원되지 않으면 remove() 함수를 사용할 수 없으며, 이 경우 컴파일러는 에러를 발생시킵니다. remove() 함수는 오직 등호 연산에 근거하여 원소를 삭제하며, 다른 조건에 근거하여 삭제 여부를 결정할 수 없습니다. 좀 더 유연한 조건부 삭제를 수행하려면 remove_if() 함수를 사용할 수 있습니다. remove_if()는 데이터 원소 값 하나를 인자로 받아 bool 값을 반환하는 조건자(predicate) 함수를 인자로 받습니다. 그리고 조건자가 true를 반환하는 모든 데이터 원소를 리스트에서 삭제합니다. 최신 C++ 버전을 사용한다면 조건자 자리에 람다 표현식(lambda expression)을 사용할 수 있습니다. remove()remove_if() 함수 사용법을 익히기 위해 다음 예제를 살펴보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.