基于各种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 ++中对对象的矢量进行排序,因为在其他各种项目中,我已经重复使用了很多次。
我的问题是,这是什么?仿函数,内联函数,运算符重载或其他完全不同的东西?我怎么能确定差异?
答案 0 :(得分:1)
也许我不理解这个问题,但是如果这个引用了std :: sort我会说它是一个模板函数ref
答案 1 :(得分:1)
我的问题是,这是什么?仿函数,内联函数,运算符重载或其他完全不同的东西?
这只是一个功能,转换为pointer to function。函数指针可以在函数调用操作符中使用,因此它可以用作std::sort
的比较器。