boost::bind、boost::lambda ライブラリと、それらを STL アルゴリズムで使用する方法を学習しようとしています。int キーでソートされた int-string ペアのベクトルがあるとします。次に、ベクトルをソートしたまま新しいペアを挿入する場所は、次のように見つけることができます。
std::vector<std::pair<int, string> > entries;
...
int k = ...;
// Let's ignore std::lower_bound return value for now
std::lower_bound (entries.begin(), entries.end(), k,
boost::bind (&std::pair<int, string>::first, _1) < k)
operator<
ここで、関数オブジェクト (std::less<int>
この例の型)に置き換えたいと思います。
std::less<int> comparator;
上記のコードを変更して機能させるにはどうすればよいですか? 私はただすることはできません
std::lower_bound (entries.begin(), entries.end(), k,
comparator (boost::bind (&std::pair<int, string>::first, _1), k))
std::less<int>::operator()
の戻り値の型が何であれ、受け入れないためですboost::bind
。ここで何が欠けていますか?ティア