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

 
 
 
 
void remove( const T& value );
(C++11 起)
(C++20 前)
size_type remove( const T& value );
(C++20 起)
template< class UnaryPredicate >
void remove_if( UnaryPredicate p );
(C++11 起)
(C++20 前)
template< class UnaryPredicate >
size_type remove_if( UnaryPredicate p );
(C++20 起)

移除所有满足特定标准的元素。第一版本移除所有等于 value 的元素,第二版本移除所有谓词 p 对它返回 true 的元素。

参数

value - 要移除的元素的值
p - 若应该移除该元素则返回 ​true 的一元谓词。

对每个(可为 const 的) T 类型参数 v ,表达式 p(v) 必须可转换为 bool ,无关乎值类别,而且必须不修改 v 。从而不允许 T& 类型参数,亦不允许 T ,除非对 T 而言移动等价于复制 (C++11 起)。 ​

返回值

(无)

(C++20 前)

移除的元素数。

(C++20 起)

复杂度

与容器大小成线性

示例

#include <forward_list>
#include <iostream>
 
int main()
{
    std::forward_list<int> l = { 1,100,2,3,10,1,11,-1,12 };
 
    l.remove(1); // 移除两个等于 1 的元素
    l.remove_if([](int n){ return n > 10; }); // 移除全部大于 10 的元素
 
    for (int n : l) {
        std::cout << n << ' '; 
    }
    std::cout << '\n';
}

输出:

2 3 10 -1

参阅

移除满足特定判别标准的元素
(函数模板)