Si prega di dare un'occhiata a questo esempio pubblicato da Johannes Schaub per ordinare un vettore di coppie:Aiutami a capire questo utilizzo di boost :: legare
How do I sort a vector of pairs based on the second element of the pair?
std::sort(a.begin(), a.end(),
boost::bind(&std::pair<int, int>::second, _1) <
boost::bind(&std::pair<int, int>::second, _2));
Pensavo capisco spinta: : legare, ma ho problemi con questo.
Domanda 1:
algoritmo del genere si aspetta una funzione predicato come un terzo parametro. Quello che vedo qui è un'espressione booleana. Che cosa mi manca ?:
boost::bind(&std::pair<int, int>::second, _1) < boost::bind(&std::pair<int, int>::second, _2)
Condivide la spinta :: bind biblioteca operatore di sovraccarico < per quei due si lega, e sta tornando una sorta di puntatore a funzione (come un lambda)?
Domanda 2:
Questo mi fa confusa:
boost::bind(&std::pair<int, int>::second, _1)
Di solito c'è una sorta di puntatore a funzione come primo parametro di una chiamata bind, ma qui si tratta di un indirizzo di un membro della classe? Qual è il risultato di quel particolare legame?
Grazie per il vostro tempo & aiuto