c++ remove_if能操作自定義類型嗎

c++
小樊
85
2024-07-26 13:08:12

是的,C++的remove_if函數(shù)可以操作自定義類型。要使用remove_if函數(shù)操作自定義類型,需要提供一個(gè)謂詞函數(shù)(Predicate Function),用于定義何時(shí)應(yīng)該移除元素。該謂詞函數(shù)可以根據(jù)自定義類型的特定屬性或條件來(lái)判斷是否應(yīng)該移除該元素。

以下是一個(gè)示例,演示如何使用remove_if函數(shù)移除自定義類型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;
}

在上面的示例中,定義了一個(gè)Person結(jié)構(gòu)體,并提供了一個(gè)謂詞函數(shù)isAdult,用于判斷一個(gè)人是否成年。然后使用remove_if函數(shù)結(jié)合isAdult函數(shù)移除未成年人,最終打印出剩余的成年人。

0