list_erase2

list_erase2 (std::erase, std::erase_if — 조건부 일괄 제거)

std::list를 위한 비멤버 함수 std::erasestd::erase_if예요. 특정 값과 같거나, 술어를 만족하는 모든 원소를 컨테이너에서 제거해요.

출처: cppreference

본문

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

template< class T, class Alloc, class U >
std::list<T, Alloc>::size_type
    erase( std::list<T, Alloc>& c, const U& value );     // (1) (since C++20)
template< class T, class Alloc, class Pred >
std::list<T, Alloc>::size_type
    erase_if( std::list<T, Alloc>& c, Pred pred );       // (2) (since C++20)

(1) value와 같게 비교되는 모든 원소를 제거해요. std::erase는 C++26에서 U = T 기본값 형태로 바뀌었어요.

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

반환값

제거된 원소의 개수.

복잡도

선형(linear)이에요.

예제

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

더 알아보기 (Learn more)

cppreference