2017-11-15 7 views
-1

Basierend auf verschiedenen Stack-Überlauf-Beiträge, habe ich folgendes zusammen in einem Kennzeichenerkennung Programm, das ich eine Weile zurück tatC++ - Funktor vs Inline-Funktion vs Operator Overload?

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) 

Hier ist das Repo, wenn mehr Kontext hilfreich wäre:

https://github.com/MicrocontrollersAndMore/OpenCV_3_License_Plate_Recognition_Cpp

Dieser Code ist großartig für das Sortieren eines Vektors von Objekten in C++ basierend auf einer beliebigen Elementvariable, ich habe es schon einige Male in verschiedenen anderen Projekten wiederverwendet.

Meine Frage ist, was ist das? Ein Funktor, eine Inline-Funktion, eine Überlastung des Operators oder etwas ganz anderes? Wie könnte ich den Unterschied feststellen?

Antwort

1

Vielleicht verstehe ich nicht die Frage, aber wenn diese bezieht sich auf std :: sort würde ich sagen, es ist eine Template-Funktion ref

1

Meine Frage ist, was ist das? Ein Funktor, eine Inline-Funktion, eine Überlastung des Operators oder etwas ganz anderes?

Es ist nur eine Funktion, die in eine pointer to function konvertiert wurde. Ein Funktionszeiger kann im Funktionsaufruf-Operator verwendet werden und kann somit als Vergleicher für std::sort verwendet werden.