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

< cpp‎ | container‎ | forward list

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

### 参阅

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