Сортировка vector> по second
Как отсортировать vector<pair<int,int>> по second.
Например, вектор пар является:
1 - 60
2 - 80
3 - 40
4 - 10
Нужно получить:
1 - 10
2 - 40
3 - 60
4 - 80
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Написать соответствующий компаратор:
sort(v.begin(),v.end(),[](auto a, auto b){ return a.second < b.second; });
Если же вы хотите не сортировать, а переупорядочить содержимое пар, как в примере - ну, первое, что приходит на ум - дополнительный вектор, типа
vector<pair<int,int>> v { {1,60},{2,80},{3,40},{4,10}};
vector<int> tmp;
for(auto& e: v) tmp.push_back(e.second);
sort(tmp.begin(),tmp.end());
for(int i = 0; i < v.size(); ++i ) v[i].second = tmp[i];