Полагаю, вы хотите перебрать вектор, чтобы найти объект studentGrandeInfo с определенным идентификатором. Вы можете сделать это довольно просто, используя std::find_if
вместе с лямбда-функцией для правильного сравнения. Код может выглядеть следующим образом:
int toFind = 4219; // some ID
auto it = std::find_if(
gradebook.begin(), gradebook.end(),
[&toFind](const StudentGradeInfo& x) { return x.studentID == toFind;});
В вашем случае, поскольку вы, studentID
, по-видимому, выступаете в качестве "уникального ключа", я бы вместо этого использовал структуру данных std::map<int, StrudentGradeInfo>
.
Оператор перегрузки ==
- как указал gsamars - как-то нецелесообразно, поскольку он предназначен для сравнения двух объектов одного типа (а не объекта с целым числом). Смотрите следующий код, иллюстрирующий это:
struct StudentGradeInfo {
std::string studentName;
int studentID;
bool operator==(const StudentGradeInfo& c) const {
return c.studentID == studentID;
}
};
int main() {
std::vector<StudentGradeInfo> gradebook {
{ "john", 123 },
{ "max", 345 }
};
StudentGradeInfo aNewOne { "sepp", 345 };
auto it = find(gradebook.begin(),gradebook.end(),aNewOne);
if (it == gradebook.end()) {
cout << "345 does not exist" << endl;
} else {
cout << "345 already exists" << endl;
}
}