#include <string>
#include <vector>
#include <algorithm>
struct student_t
{
std::string name;
int age, score;
};
bool by_more_than_1_field( student_t const &lhs, student_t const &rhs ){
if(lhs.name ==rhs.name && lhs.age < rhs.age) return lhs.score<rhs.score;
if(lhs.name==rhs.name) return lhs.age<rhs.age;
return lhs.name<rhs.name;
}
Объяснение:
когда вы создаете вектор и применяете функцию сортировки, передайте эту функцию в качестве параметра.
ех. vector<strudent_t> st;
а затем для сортировки sort(st.begin(),st.end(), by_more_than_1_field)
Для этого функция принимает два константных аргумента класса student_t. Он принимает const, поэтому объект student_t не может быть изменен. Затем он сравнивается, как указано в функции.