deque::erase / erase_if
deque::erase / erase_if (값·조건으로 요소 제거)
std::deque에서 특정 값과 같거나 조건을 만족하는 요소를 모두 제거하고, 제거된 개수를 반환하는 자유 함수들이에요. <deque> 헤더, C++20부터.
출처: cppreference
본문
이 자유 함수들은 std::erase(container, value)와 std::erase_if(container, pred) 형태로 제공돼요.
template< class T, class Alloc, class U >
std::deque<T, Alloc>::size_type
erase( std::deque<T, Alloc>& c, const U& value ); // (1)
template< class T, class Alloc, class Pred >
std::deque<T, Alloc>::size_type
erase_if( std::deque<T, Alloc>& c, Pred pred ); // (2)
-
value와 같은 요소를 모두 제거해요. 반환 값은 제거된 요소의 개수예요.
-
- 술어
pred를 만족하는 요소를 모두 제거해요. 반환 값은 제거된 요소의 개수예요.
- 술어
erase_if는 관례적으로
auto it = std::remove_if(c.begin(), c.end(), pred);
auto removed = c.end() - it;
c.erase(it, c.end());
와 같은 효과로 동작해요(그리고 제거 개수를 반환).
std::deque<int> d{1, 2, 3, 2, 4};
auto n = std::erase(d, 2); // 2 제거, n == 2
auto m = std::erase_if(d, [](int x){ return x % 2 == 0; }); // 짝수 제거
멤버 erase(pos)가 위치 기반이라면, 이 자유 함수들은 값/조건 기반으로 한 번에 지우면서 개수까지 알려줘요.