, wie ichWie kann ich Lambda für Container Vergleichsoperator verwenden? Dies ist
priority_queue< int, vector<int>, greater<int> > third (myints,myints+4);
// using mycomparison:
priority_queue< int, vector<int>, mycomparison > q1;
class mycomparison
{
public:
bool operator() (const int& lhs, const int&rhs) const
{
return (lhs<rhs);
}
};
typedef priority_queue<int,vector<int>,mycomparison> q2;
Aber ich frage mich, ob ich dort Lambda-Funktionen integrierte Funktion oder eine neue Klasse als benutzerdefinierten Komparator ..
kann
Lambdas sind Funktoren, während Container einen Funktor * Typ * benötigen. Sie könnten zwar etwas mit 'declltype' machen (aber ich würde nicht erwarten, dass es in MSVC2010 funktioniert). – Cameron
Ja, Sie könnten ein Lambda verwenden, aber das Lambda müsste so global sein wie die globalste Deklaration seiner Verwendung als ein Typ, der den Zweck verfehlt und im Allgemeinen unordentlicher ist. – GManNickG