list_remove

list_remove (std::list::remove, remove_if — 조건부 원소 제거)

std::list에서 특정 기준을 만족하는 모든 원소를 제거하는 멤버 함수들이에요. 값과 같거나, 술어가 참인 원소를 제거해요.

출처: cppreference

본문

시그니처는 다음과 같아요.

void remove( const T& value );              // (1) (until C++20)
size_type remove( const T& value );         // (since C++20)
template< class UnaryPredicate >
void remove_if( UnaryPredicate p );         // (2) (until C++20)
template< class UnaryPredicate >
size_type remove_if( UnaryPredicate p );    // (since C++20)

특정 기준을 만족하는 모든 원소를 제거해요. 제거된 원소에 대한 이터레이터와 참조만 무효화돼요.

(1) operator==를 써서 value와 같은 모든 원소를 제거해요.

(2) 술어 ptrue를 반환하는 모든 원소를 제거해요.

C++20부터는 제거된 원소의 개수를 반환해요.

복잡도

std::distance(begin(), end())에 정확히 그만큼의 비교 호출이 일어나는 선형(linear) 연산이에요.

예제

#include <list>
#include <iostream>
int main()
{
    std::list<int> l{1, 2, 3, 2, 4};
    l.remove(2);                 // {1, 3, 4}
    l.remove_if([](int x){ return x % 2 == 1; });  // {4}
    for (int x : l) std::cout << x << ' ';
}

더 알아보기 (Learn more)

cppreference