Я пытался закодировать программу, в которую я вводил данные для класса ученика (с помощью (const string & first_name, const string & last_name, float gpa, int id), который может отображать, какие учащиеся имеют gpa выше 1,00. возникли проблемы при переборе по вектору. Вот функция, вызывающая у меня проблемы:
vector<Student> find_failing_students(vector<Student> &students) {
vector<Student> failing_students;
int endVar;
vector<Student>::iterator it;
std::vector<Student>::iterator &forwardmarch = &students.begin();
while(forwardmarch != &students.end())
{
Student temp = Student(forwardmarch->first_, forwardmarch->last_, forwardmarch->gpa_, forwardmarch->id_);
if(temp.getgpa(temp) < 1) {
failing_students.push_back(temp);
forwardmarch++;
}
часть std::vector<Student>::iterator &forwardmarch = &students.begin();
выдает мне следующую ошибку: неверная инициализация неконстантной ссылки типа 'std :: vector :: iterator & '{aka' __gnu_cxx :: __ normal_iterator> & '} из значения типа' std :: vector :: iterator * '{aka' __gnu_cxx :: __ normal_iterator> * '}
в то время как l oop while(forwardmarch != &students.end())
также выдает мне следующую ошибку: нет соответствия для оператора! = (Типы операндов 'std :: vector :: iterator' {aka '__gnu_cxx :: __ normal_iterator>'} и 'std :: vector :: iterator * '{aka' __gnu_cxx :: __ normal_iterator> * '})
Я пробовал много вещей, а также пытался использовать более типичный для l oop, такой как
for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it) {
it->doSomething();
}
Я немного сбит с толку и довольно плохо знаком с C ++. elp будет оценен. Спасибо!