Perché this:Come funziona std :: sort per l'elenco di coppie?
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<pair<int, string>> list;
int main() {
int one = 1, two = 2, three =3, five =5, six = 6;
string bla = "bla";
list.push_back(pair<int, string>(two, bla));
list.push_back(pair<int, string>(one, bla));
list.push_back(pair<int, string>(two, bla));
list.push_back(pair<int, string>(six, bla));
list.push_back(pair<int, string>(five, bla));
sort(list.begin(), list.end());
for(auto item : list) {
cout << item.first << endl;
}
}
lavoro come previsto? output è:
1
2
2
5
6
Come std::sort
ottiene come ordinare i miei int-string
coppie? Come farlo fare così per una mia classe come coppia first
? C'è un modo per ordinare per second
utilizzando std::sort
?
'std :: pair' ha un' operatore <'. Se vuoi 'std :: sort' ordinare in modo diverso, dagli un comparatore. – chris
http://en.cppreference.com/w/cpp/utility/pair/operator_cmp – bolov
Puoi provare a fornire una specializzazione per l'operatore bool<(const & std :: pair op1, const & std :: pair op2) 'funzione, e passare questo per l'ordinamento. –