Z.B. der sort Algorithmus: Beim Aufruf mit 2 Argumenten (Anfang und Ende des Container-Bereichs) wird implizit der Operator für die jeweilige Klasse benutzt, d.h. Sortieren in aufsteigender Reihenfolge.
Das umgekehrte, d.h. sortieren in absteigender Reihenfolge
kann man erreichen mit:
vector<string> vecstr(...); ... ;
sort(vecstr.begin(), vecstr.end(), greater<std::string>());
greater<std::string>() ist ein
Konstruktor:
Es wird ein Objekt der
greater<>() template Klasse
für
string angelegt.
In dieser Klassse ist der () Operator definiert, ungefähr so:
bool operator () (const string & s1;
const string & s2 ) {
return( s1 > s2 ); }
#include "myvec.hxx" class Comp3VecX { // "<" Vergleich fuer DreierVektor x-Komponente public: bool operator () (const My3Vector & v1, const My3Vector & v2) { return( v1.X() < v2.X() ); } }; int main () { vector<My3Vector> vvec; // empty <My3Vector> vector //.. fill it sort(vvec.begin(), vvec.end()); // sortieren mit "<" Operator // sortieren mit function object, nur x-Komponente sort(vvec.begin(), vvec.end(), Comp3VecX()); }
Comp3VecX ist eine Art Hilfs-Klasse für My3Vector, einziges Member ist der () Operator.
GDuckeck 2019-08-01