📜  在对象向量中查找成员变量 cpp - C++ (1)

📅  最后修改于: 2023-12-03 15:08:01.300000             🧑  作者: Mango

在对象向量中查找成员变量

在C++中,我们常常需要在对象向量中查找成员变量。本文将介绍如何使用STL中的算法来实现该功能。

语法

STL中的find_if算法用于在容器中查找某个元素。它的语法如下:

template<class InputIterator, class UnaryPredicate>
InputIterator find_if (InputIterator first, InputIterator last, UnaryPredicate pred);

其中,first和last分别指向容器中要查找的元素的起始位置和终止位置。pred是一个一元谓词,用于判断当前元素是否符合要求。如果查找成功,则返回指向该元素的迭代器;否则返回last。

示例

假设有一个存储学生信息的类:

class Student {
public:
    Student(string name, int age) : name(name), age(age) {}
    
    string getName() const { return name; }
    int getAge() const { return age; }
    
private:
    string name;
    int age;
};

我们现在有一个存储了若干个学生信息的向量:

vector<Student> students;
students.push_back(Student("Tom", 20));
students.push_back(Student("Jerry", 21));
students.push_back(Student("Lily", 19));

现在,我们要查找名为Jerry的学生,可以使用find_if算法:

auto it = find_if(students.begin(), students.end(), [](const Student& s) {
    return s.getName() == "Jerry";
});

if (it != students.end()) {
    cout << "Found! Age is " << it->getAge() << endl;
} else {
    cout << "Not found!" << endl;
}

输出结果为:

Found! Age is 21
小结

使用STL中的find_if算法可以很方便地在对象向量中查找成员变量。需要注意的是,我们需要提供一个一元谓词来判断当前元素是否符合要求。