remove
remove (값·조건 제거)
범위에서 특정 값 또는 조건을 만족하는 원소를 제거(빼내기)하는 알고리즘이에요. <algorithm> 헤더에 있어요.
출처: cppreference
본문
remove는 범위에서 value와 같은 원소(또는 pred를 만족하는 원소)를 "제거"해요. 실제로 컨테이너 크기를 줄이지는 않고, 살아남은 원소를 앞으로 당겨 새 구간의 끝을 반환해요.
template< class ForwardIt, class T >
ForwardIt remove( ForwardIt first, ForwardIt last, const T& value ); // (1)
-
value와 같은 원소 제거.
-
remove_if: 술어pred가 참인 원소 제거.
실제로 지우려면 그 뒤에 erase를 붙여야 해요(remove-erase 관용구).
std::vector<int> v{1, 2, 3, 2, 4};
auto it = std::remove(v.begin(), v.end(), 2);
v.erase(it, v.end()); // v == {1,3,4}
<algorithm>의 remove는 메모리 이동만 하고 크기 축소는 컨테이너가 담당해요. 남는 뒷부분의 값은 불확정이에요.