ペアのベクトルをソートするために Johannes Schaub によって投稿されたこの例を見てください。
ペアの 2 番目の要素に基づいてペアのベクトルを並べ替えるにはどうすればよいですか?
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:
ソート アルゴリズムは、3 番目のパラメーターとして述語関数を想定しています。ここに表示されるのはブール式です。何が欠けていますか?:
boost::bind(&std::pair<int, int>::second, _1) < boost::bind(&std::pair<int, int>::second, _2)
boost::bind ライブラリは、これら 2 つのバインドに対して operator< をオーバーロードし、何らかの関数ポインター (ラムダなど) を返していますか?
質問 2:
これは私を混乱させます:
boost::bind(&std::pair<int, int>::second, _1)
通常、バインド呼び出しの最初のパラメーターとして何らかの関数ポインターがありますが、ここではクラス メンバーのアドレスですか? その特定のバインドの結果は何ですか?
お時間とご協力ありがとうございます