#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
// class Student{
// public:
// int age;
// string name;
// Student(int age, string name){
// this->age = age;
// this -> name = name;
// }
// };
bool compare(pair<int, string> a, pair<int, string> b)
{
return a.first < b.first;
}
int main(int argc, char const *argv[])
{
int n, age;
string name;
cin >> n;
vector<pair<int, string>> v;
for (int i = 0; i < n; i++)
{
cin >> age >> name;
v.push_back(make_pair(age, name));
}
stable_sort(v.begin(), v.end(), compare);
for (int i = 0; i < n; i++)
{
cout << v[i].first << ' ' << v[i].second << '\n';
}
return 0;
}
sort
를 사용하면 같은 값이 먼저 나오는 순서를 알기 어렵지만
stable_sort
에서 정의를 해주면 순서를 정의할 수 있다.
compare(pair<int,string> a, pair<int, string> b){
if( a.age == b.age ) { a.name<b.name}
stable_sort로 정렬한다면 컨테이너의 앞의 원소(여기선 vector의 앞 원소) 순서대로 정렬이 된다