[C++] Come ordinare con un lambda?


Answers

Per molto codice, puoi usarlo in questo modo:

#include<array>
#include<functional>

int main()
{
    std::array<int, 10> vec = { 1,2,3,4,5,6,7,8,9 };
    std::sort(std::begin(vec ), std::end(vec ), [](int a, int b) {return a > b; });
    for (auto item : vec)
      std::cout << item << " ";

    return 0;
}

Sostituisci "vec" con la tua classe e il gioco è fatto.

Question
sort(mMyClassVector.begin(), mMyClassVector.end(), 
    [](const MyClass & a, const MyClass & b)
{ 
    return a.mProperty > b.mProperty; 
});

Mi piacerebbe utilizzare una funzione lambda per ordinare classi personalizzate al posto di associare un metodo di istanza. Tuttavia, il codice sopra restituisce l'errore:

errore C2564: 'const char *': una conversione in stile funzione in un tipo predefinito può richiedere solo un argomento

Funziona bene con boost::bind(&MyApp::myMethod, this, _1, _2) .