У меня есть vector
из structs
.Мне нужно отсортировать вектор в алфавитном порядке по фамилии студента в каждом struct
в векторе students
.Это возможно?Каждый учащийся в struct
имеет следующую информацию:
struct Student
{
string lastName;
string firstName;
string stdNumber;
double assgn1;//doubles are what I want to add in another function.
double assign2;
double assign3;
double assign4;
double midTerm;
double finalGrade;
bool operator<(Student const &other) const {
return lastName < other.lastName;
}
};
. Здесь мой students
вектор создан и заполнен:
int getFileInfo()
{
int failed=0;
ifstream fin;
string fileName;
vector<Student> students;// A place to store the list of students
Student s; // A place to store data of one student
cout<<"Please enter the filename of the student grades (ex. filename_1.txt)."<<endl;
do{
if(failed>=1)
cout<<"Please enter a correct filename."<<endl;
cin>>fileName;
fin.open(fileName.c_str());// Open the file
failed++;
}while(!fin.good());
while (fin >> s.firstName >> s.lastName >> s.stdNumber){
cout<<"Reading "<<s.firstName<<" "<<s.lastName<<" "<<s.stdNumber<<endl;
students.push_back(s);
}
vector<Student>::iterator loop = students.begin();
vector<Student>::iterator end = students.end();
fin.close();
return 0;
}
Поэтому я хочу отсортировать struct
по фамилии, а затем сможете манипулировать каждым “Student”
struct` в векторе в ДРУГОЙ ФУНКЦИИ.Можно ли это сделать?
Я хочу иметь возможность добавлять double
частей к каждому ученику в векторе, который у меня есть в другой функции.Затем я хочу иметь возможность распечатать всю информацию о каждом студенте.Я могу распечатать информацию о каждом ученике, если я делаю это в функции, в которой находится вектор students
, но мне нужно напечатать в другой функции, void gradeInput()
.Я буду cin>>
каждый double
класс для каждого студента, по одному студенту за раз.Я думал, что это будет выглядеть примерно так:
void gradeInput()
{
For(each student)// I don’t know what to do to in this for loop to loop through
//each student. I want to make it so everywhere “stud” is change to the
//next student after one loop iteration.
//I made a default `Student` called ‘stud’ to show this example..
cout<<"Student "<<stud.firstName<<" "<<stud.lastName<<" "<<stud.stdNumber<<":";
cout<<"Please, enter a grade (between 0.0 and 100.0) for ... "<<endl;
cout<<"Assignment 1:";
cin>>stud.assgn1;
cout<<endl;
cout<<"Assignment 2:";
cin>>stud.assign2;
cout<<endl;
cout<<"Assignment 3:";
cin>>stud.assign3;
cout<<endl;
cout<<"Assignment 4: ";
cin>>stud.assign4;
cout<<endl;
cout<<"MidTerm: ";
cin>>stud.midTerm;
cout<<endl;
cout<<"Final Exam: ";
cin>>stud.finalGrade;
cout<<endl;
return;
}
Надеюсь, это имеет смысл, и я могу получить некоторую помощь!Моя учительница мало помогает мне, так как она не отвечает на электронные письма, и у нее 45 минут рабочего времени, так что все вы, дружелюбные люди, - большой плюс!Спасибо!
PS Извините за плохое форматирование кода, я все еще пытаюсь выяснить ввод кода сайта.