class cmp { // simple comparison function public: bool operator()(const int x,const int y) { return x > y; } };
When i call any stl algorithms like std::sort with an object of compare , it works fine.
std::sort(vec.begin(), vec.end(), cmp());
But for stl containers this is not similar.
std::map<int, int> mp(cmp());
// Not working std::map< int, int, cmp> mp;
// Works fine.
Also, in case of lambda expression,
auto cmp = [](cont int x, const int y) { return x > y; };
std::map<int, int, bool(*)(int, int)> mp(cmp());
//Works std::map<int, int > mp(cmp);
// Doesnot work
Reading the map constructor from cplusplus does not clear my doubts ? Can anyone explain the difference ?
Aucun commentaire:
Enregistrer un commentaire