algorithm 헤더에 정의된 템플릿에 있는 remove() 알고리즘은 범위에서 지정한 값과 일치하는 원소들을 제거한다. 예를 들어보자.
std::vector<std::string> words { "one", "none", "some", "all", "none", "most", "many"}; auto iter = std::remove(std::begin(words), std::end(words), "none");
두 번째 문장은 remove()의 세 번째 인수 string("none)과 일치하는 모든 원소를 처음 두 인수로 지정된 범위에서 제거한다. 원소들을 제거한다는 표현이 약간의 오해를 일으킬 수도 있다. remove()는 전역 함수이므로 컨테이너의 원소들을 삭제할 수 없다. remove()가 원소들을 제거하는 방법은 문자열에서 공백을 제거하는 절차와 비슷하다. 세 번째 인수와 일치하는 원소들을 벡터 컨테이너 앞으로(오른쪽에서 왼쪽으로) 덮어쓰면서 복제하는 것이다. 그림 2-4는 이게 어떻게 동작하는지 보여준다.
▲ 그림 2-4 remove() 알고리즘이 동작하는 방식