std::list<T,Allocator>:: remove, remove_if
| (1) | ||
|
void
remove
(
const
T
&
value
)
;
|
(C++20 이전) | |
|
size_type remove
(
const
T
&
value
)
;
|
(C++20 이후)
(C++26 이후 constexpr) |
|
| (2) | ||
|
template
<
class
UnaryPred
>
void remove_if ( UnaryPred p ) ; |
(C++20 이전) | |
|
template
<
class
UnaryPred
>
size_type remove_if ( UnaryPred p ) ; |
(C++20 이후)
(C++26 이후 constexpr) |
|
특정 조건을 만족하는 모든 요소를 제거합니다.
제거된 요소에 대한 반복자와 참조만 무효화합니다.
목차 |
매개변수
| value | - | 제거할 요소의 값 |
| p | - |
요소가 제거되어야 할 경우
true
를 반환하는 단항 predicate.
표현식
p
(
v
)
는
bool
로 변환 가능해야 하며,
|
| 타입 요구사항 | ||
-
UnaryPred
는
Predicate
요구사항을 충족해야 합니다.
|
||
반환값
|
(없음) |
(until C++20) |
|
제거된 요소의 수 |
(since C++20) |
복잡도
주어진 N 이 std:: distance ( begin ( ) , end ( ) ) 인 경우:
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_list_remove_return_type
|
201806L
|
(C++20) | 반환 타입 변경 |
예제
#include <list> #include <iostream> int main() { std::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
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 1207 | C++98 |
반복자 및/또는 참조가 무효화되는지 여부가
명확하지 않았음 |
제거된 요소에 대한 반복자와
참조만 무효화됨 |
참고 항목
|
특정 조건을 만족하는 요소들을 제거함
(function template) |