我正在尝试精简 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
. 我在这里想念什么?TIA