Namespaces
Variants

std::forward_list<T,Allocator>:: remove, remove_if

From cppreference.net

(1)
void remove ( const T & value ) ;
(C++11부터)
(C++20까지)
size_type remove ( const T & value ) ;
(C++20부터)
(C++26부터 constexpr)
(2)
template < class UnaryPred >
void remove_if ( UnaryPred p ) ;
(C++11부터)
(C++20까지)
template < class UnaryPred >
size_type remove_if ( UnaryPred p ) ;
(C++20부터)
(C++26부터 constexpr)

특정 조건을 만족하는 모든 요소를 제거합니다.

1) value 와 동일한 모든 요소를 제거합니다 operator == 를 사용하여).
2) 술어 p true 를 반환하는 모든 요소를 제거합니다.

제거된 요소에 대한 반복자와 참조만 무효화합니다.

목차

매개변수

value - 제거할 요소의 값
p - 요소가 제거되어야 할 경우 ​ true 를 반환하는 단항 predicate.

표현식 p ( v ) T 타입의 (const 가능성 있는) 모든 인수 v 에 대해 값 범주 와 관계없이 bool 로 변환 가능해야 하며, v 를 수정해서는 안 됩니다. 따라서 T & 매개변수 타입은 허용되지 않으며 , T 에 대해 이동이 복사와 동등하지 않는 한 T 도 허용되지 않습니다 (C++11부터) . ​

타입 요구사항
-
UnaryPred Predicate 요구사항을 충족해야 합니다.

반환값

(없음)

(until C++20)

제거된 요소의 수

(since C++20)

복잡도

주어진 N std:: distance ( begin ( ) , end ( ) ) 인 경우:

1) 정확히 N 번의 비교를 operator == 를 사용하여 수행합니다.
2) 정확히 N 번의 술어 p 적용.

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_list_remove_return_type 201806L (C++20) 반환 타입 변경

예제

#include <forward_list>
#include <iostream>
int main()
{
    std::forward_list<int> l = {1, 100, 2, 3, 10, 1, 11, -1, 12};
    auto count1 = l.remove(1);
    std::cout << count1 << " elements equal to 1 were removed\n";
    auto count2 = l.remove_if([](int n){ return n > 10; });
    std::cout << count2 << " elements greater than 10 were removed\n";
    std::cout << "Finally, the list contains: ";
    for (int n : l)
        std::cout << n << ' ';
    std::cout << '\n';
}

출력:

2 elements equal to 1 were removed
3 elements greater than 10 were removed
Finally, the list contains: 2 3 10 -1

참고 항목

특정 조건을 만족하는 요소들을 제거함
(function template)