我有下面的代码片段作为sort函数的谓词。这是为了在我放入向量的哈希映射中对值对进行排序。在向量上调用排序
struct val_less : binary_function<pair<string, unsigned int>, pair<string, unsigned int>, bool>
{
bool operator() ( pair<string, unsigned int>&x , pair<string, unsigned int> &y )
const {
return x.second>y.second;
}
}val_gt;
我理解代码在做什么,但我不明白为什么要这样做。什么是binary_function,为什么我们需要将它用作“:”。什么是operator()函数,为什么它是bool operator()。我理解参考参数,因为我们想要改变原始矢量。
由于
答案 0 :(得分:0)
binary_function是排序函数的基类:
http://www.cplusplus.com/reference/functional/binary_function/
语法:
struct val_less : binary_function<pair<string, unsigned int>, pair<string, unsigned int>, bool>
表示您的结构是binary_function的模板实例化的衍生物。 “:”表示继承。
此外,该结构在C ++中作为仿函数类型运行 - 覆盖了operator(),sort函数将使用它进行比较。这些函子的用法可以用C ++ 11中的匿名函数替换。