C ++ - 仿函数与内联函数vs运算符重载?

时间:2017-11-15 22:05:37

标签: c++ operator-overloading inline functor

基于各种Stack Overflow帖子,我将以下内容放在我做了一段时间的车牌识别程序中:

PossiblePlate.h:

(lines omitted)

std::string strChars;

///////////////////////////////////////////////////////////////////////////////////////////////
static bool sortDescendingByNumberOfChars(const PossiblePlate &ppLeft, const PossiblePlate &ppRight) {
    return(ppLeft.strChars.length() > ppRight.strChars.length());
}

(lines omitted)

Main.cpp的

(lines omitted)

// sort the vector of possible plates in descending order (most number of chars to least number of chars)
std::sort(vectorOfPossiblePlates.begin(), vectorOfPossiblePlates.end(), PossiblePlate::sortDescendingByNumberOfChars);

(lines omitted)

如果更多上下文有帮助,这是回购:

https://github.com/MicrocontrollersAndMore/OpenCV_3_License_Plate_Recognition_Cpp

这段代码很适合基于任何成员变量在C ++中对对象的矢量进行排序,因为在其他各种项目中,我已经重复使用了很多次。

我的问题是,这是什么?仿函数,内联函数,运算符重载或其他完全不同的东西?我怎么能确定差异?

2 个答案:

答案 0 :(得分:1)

也许我不理解这个问题,但是如果这个引用了std :: sort我会说它是一个模板函数ref

答案 1 :(得分:1)

  

我的问题是,这是什么?仿函数,内联函数,运算符重载或其他完全不同的东西?

这只是一个功能,转换为pointer to function。函数指针可以在函数调用操作符中使用,因此它可以用作std::sort的比较器。