是的,C++的remove_if
函數可以操作自定義類型。要使用remove_if
函數操作自定義類型,需要提供一個謂詞函數(Predicate Function),用于定義何時應該移除元素。該謂詞函數可以根據自定義類型的特定屬性或條件來判斷是否應該移除該元素。
以下是一個示例,演示如何使用remove_if
函數移除自定義類型Person
的元素:
#include <iostream>
#include <vector>
#include <algorithm>
struct Person {
std::string name;
int age;
};
bool isAdult(const Person& person) {
return person.age >= 18;
}
int main() {
std::vector<Person> people = { {"Alice", 25}, {"Bob", 17}, {"Charlie", 30} };
// 移除未成年人
people.erase(std::remove_if(people.begin(), people.end(), isAdult), people.end());
// 打印剩余的人員
for (const Person& person : people) {
std::cout << person.name << " (" << person.age << ")" << std::endl;
}
return 0;
}
在上面的示例中,定義了一個Person
結構體,并提供了一個謂詞函數isAdult
,用于判斷一個人是否成年。然后使用remove_if
函數結合isAdult
函數移除未成年人,最終打印出剩余的成年人。