跳到主要内容

std::forward_list remove() 方法

// (1) Non const version only
size_type remove( const T& value );

// (2) Non const version only
template< class UnaryPredicate >
size_type remove_if( UnaryPredicate p );

删除所有满足特定条件的元素。

  • (1) 删除所有与 value 相等的元素。
  • (2) 删除所有谓词 p 返回 true 的元素。

参数

  • value - 要删除的元素的值
  • p - 一元谓词,如果元素应被删除,则返回 true。表达式 p(v) 对于所有类型的参数 v(可能是 constT,无论值类别如何,都必须可转换为 bool,并且不得修改 v。因此,不允许使用 T& 作为参数类型,除非对于 T 移动等同于复制,否则也不允许使用 T

返回值

删除的元素数量。 (自 C++20 起)
(none) (直到 C++20)

复杂度

与容器大小呈线性关系 - O(size())

异常

(无)

备注

特性测试宏: __cpp_lib_generic_associative_lookup

示例

Main.cpp
#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
本文源自 此 CppReference 页面。可能为了改进或编辑偏好进行了修改。点击“编辑此页面”可查看对本文档的所有更改。
悬停查看原始许可证。

std::forward_list remove() 方法

// (1) Non const version only
size_type remove( const T& value );

// (2) Non const version only
template< class UnaryPredicate >
size_type remove_if( UnaryPredicate p );

删除所有满足特定条件的元素。

  • (1) 删除所有与 value 相等的元素。
  • (2) 删除所有谓词 p 返回 true 的元素。

参数

  • value - 要删除的元素的值
  • p - 一元谓词,如果元素应被删除,则返回 true。表达式 p(v) 对于所有类型的参数 v(可能是 constT,无论值类别如何,都必须可转换为 bool,并且不得修改 v。因此,不允许使用 T& 作为参数类型,除非对于 T 移动等同于复制,否则也不允许使用 T

返回值

删除的元素数量。 (自 C++20 起)
(none) (直到 C++20)

复杂度

与容器大小呈线性关系 - O(size())

异常

(无)

备注

特性测试宏: __cpp_lib_generic_associative_lookup

示例

Main.cpp
#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
本文源自 此 CppReference 页面。可能为了改进或编辑偏好进行了修改。点击“编辑此页面”可查看对本文档的所有更改。
悬停查看原始许可证。