Пожалуйста, посмотрите на этот пример, опубликованный Johannes Schaub для сортировки вектора пар:
Как отсортировать вектор пар на основе второго элемента пары?
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, для этих двух связок и возвращает какой-то указатель на функцию (например, лямбда)?
Вопрос 2:
Это меня пугает:
boost::bind(&std::pair<int, int>::second, _1)
Обычно есть какой-то указатель на функцию в качестве первого параметра вызова привязки, но здесь это адрес члена класса? Каков результат этого конкретного связывания?
Спасибо за ваше время и помощь