Пожалуйста, посмотрите на этот пример, опубликованный Йоханнесом Шаубом, чтобы отсортировать вектор пар:
Как отсортировать вектор пар на основе второго элемента пары?
std::sort(a.begin(), a.end(),
boost::bind(&std::pair<int, int>::second, _1) <
boost::bind(&std::pair<int, int>::second, _2));
Мне показалось, что я понимаю boost :: bind, но у меня проблемы с этим.
Вопрос 1:
Алгоритм ожидает функцию предиката в качестве третьего параметра.То, что я вижу здесь, является логическим выражением.Чего мне не хватает?:
boost::bind(&std::pair<int, int>::second, _1) < boost::bind(&std::pair<int, int>::second, _2)
Имеет ли оператор перегрузки библиотеки boost :: bind <для этих двух связей и возвращает какой-то указатель на функцию (например, лямбду)? </p>
Вопрос 2:
Это сбивает меня с толку:
boost::bind(&std::pair<int, int>::second, _1)
Обычно в качестве первого параметра вызова привязки используется некоторый указатель на функцию, но здесь это адресчлен класса?Каков результат этой конкретной привязки?
Спасибо за ваше время и помощь