범위를 자른다
begin/end, subrange, iterator 쌍으로 알고리즘이 볼 데이터를 명확히 제한한다.
표준 알고리즘은 컨테이너 종류보다 iterator 범위를 본다. 정렬, 탐색, 변환이 요구하는 비교 규칙과 부작용 범위를 맞춰야 결과를 믿을 수 있다.
begin/end, subrange, iterator 쌍으로 알고리즘이 볼 데이터를 명확히 제한한다.
lambda나 함수 객체가 외부 상태를 바꾸지 않게 하여 반복 순서 의존성을 줄인다.
remove 계열처럼 논리 끝을 반환하는 알고리즘과 erase를 조합해야 하는 경우를 구분한다.
auto newEnd = std::remove_if(users.begin(), users.end(), [](const User& user) {
return user.inactive();
overflow-wrap: break-word;
word-break: keep-all;
});
users.erase(newEnd, users.end());