Сортировка строки предикатом с++

сортировка строки предикатом с++
Есть строка
9А Ivan
9A Petr
10B Oleg
11A Vasia

Нужно в начале отсортировать по классу, а потом по имени.
так вот
#include
#include
#include
using namespace std;
struct man{
string fName;
string lName;
string form;
string date;

};
bool funct(const man tmp,const man arr){

if (tmp.form.size()== arr.form.size())
{
if (tmp.form != arr.form )
return tmp.form < arr.form;
else
return (tmp.lName < arr.lName);
}
else
{

//как быть в этом случае?
}
}
int main(int argc, char* argv[])
{
int n;
string str;
cin>>n;
man *arr = new man[n];
for(int i = 0;i>str;
arr.fName = str;
cin>>str;
arr
.lName = str;
cin>>str;
arr
.form = str;
cin>>str;
arr
.date = str;
}

sort(arr,arr+n,funct);

for (int i=0; i.form< <" "<.fName< <" "<.lName< <" "<.date<

  • Суть из этого покоцоного куска кода совершенно не ясна.
    Ну, как-то в таком вот акцепте:

    #include
    #include
    #include
    #include
    #include

    struct learner {
    std::string cls;
    std::string name;
    };

    bool cmp(const learner &l1, const learner &l2)

    int main() {
    using namespace std;
    vector v;
    learner e;
    while (cin >> e.cls >> e.name) v.push_back(e);
    sort(v.begin(), v.end(), cmp);
    for (int c = 0; c < v.size(); ++c) cout << v[c].cls << ' ' << v[c].name << endl;
    return 0;
    }