C++ List::remove_if() 函数



C++ 的std::list::remove_if()函数用于移除列表中满足特定条件的元素。它接受一个名为 `pred` 的参数,并移除列表中所有满足该条件的元素。`pred` 是一个谓词函数,它是用户定义的函数,只接受一个参数,该参数的类型必须与列表中存储的项的类型匹配。

remove_if() 函数不返回任何值,因为函数的返回类型是 void,它会移除列表中所有谓词函数返回 true 的元素。

语法

以下是 C++ std::list::remove_if() 函数的语法:

void remove_if (Predicate pred);

参数

pred − 这是一个一元谓词函数,它接受相同类型的数值并返回 true,表示这些值将从列表中移除。

返回值

此函数不返回任何值。

示例 1

在下面的程序中,我们定义了一个名为 Con(int n) 的谓词函数,它接受一个 int 类型参数,我们使用此函数过滤掉所有大于 2 的值。然后,我们将此函数作为参数传递给 remove_if() 函数,以移除列表中所有大于 2 的元素。

#include<iostream>
#include<list>
using namespace std;

//custom function to check condition
bool Con(int n) {
   return (n>2);
}
int main(void) {
   list<int> num_list = {1, 2, 3, 4, 5};
   cout<<"List elements before remove_if operation: "<<endl;
   for(int n : num_list) {
      cout<<n<<" ";
   }
   //using remove_if() function
   num_list.remove_if(Con);
   cout<<"\nList elements after remove_if operation: ";
   for(int n : num_list) {
      cout<<n<<" ";
   }
   return 0;
}

输出

这将生成以下输出:

List elements before remove_if operation: 
1 2 3 4 5 
List elements after remove_if operation: 1 2 

示例 2

以下是 C++ std::list::remove_if() 函数的另一个示例。在这里,我们定义了一个名为 filter_length(string len) 的谓词函数,它接受一个字符串作为参数。然后,我们将此函数作为参数传递给 remove_if() 函数,以移除列表中长度大于 3 的所有字符串元素。

#include<iostream>
#include<list>
using namespace std;

bool filter_length(string n) {
   return (n.length()>3);
}
int main(void) {
   list<string> num_list = {"Hello", "how", "are", "you"};
   cout<<"List elements before remove_if operation: "<<endl;
   for(string n : num_list) {
      cout<<n<<" ";
   }
   //using remove_if() function
   num_list.remove_if(filter_length);
   cout<<"\nList elements after remove_if operation: ";
   for(string n : num_list) {
      cout<<n<<" ";
   }
   return 0;
}

输出

以下是上述程序的输出:

List elements before remove_if operation: 
Hello how are you 
List elements after remove_if operation: how are you 

示例 3

从列表中移除偶数。

在此示例中,我们定义了一个名为 filter_evens(int n) 的谓词函数,它接受一个 int 类型参数。然后,我们将此函数作为参数传递给 remove_if() 函数,以从当前列表 {1,2,3,4,5,6,7,8,9,10} 中移除所有偶数元素(或数字)。

#include<iostream>
#include<list>
using namespace std;

//custom function to check condition
bool filter_evens(int n) {
   return (n%2 == 0);
}
int main(void) {
   list<int> num_list = {1,2,3,4,5,6,7,8,9,10};
   cout<<"List elements before remove_if operation: "<<endl;
   for(int n : num_list) {
      cout<<n<<" ";
   }
   //using remove_if() function
   num_list.remove_if(filter_evens);
   cout<<"\nAfter removing even numbers from list elements are: ";
   for(int n : num_list) {
      cout<<n<<" ";
   }
   return 0;
}

输出

执行上述程序后,它将产生以下输出:

List elements before remove_if operation: 
1 2 3 4 5 6 7 8 9 10 
After removing even numbers from list elements are: 1 3 5 7 9 
广告