Подскажите пожалуйста как написать свой компаратор для set
.
Это будет использоваться в целях спортивного программирования.
Так что желательно попроще и поменьше кода.
Творчески перерабатывая пример @Qwertiy :)
int main()
{
auto cmp = [](int a, int b) { return a > b; };
set <int, decltype(cmp)> s(cmp);
s.insert(2);
s.insert(20);
s.insert(12);
s.insert(-7);
for (int x : s)
cout << x << ' ';
return 0;
}
Берем предикат
bool compare(X const& lhs, X const& rhs) {
return lhs < rhs;
}
и делаем из него класс:
#include <type_traits>
using Compare = std::integral_constant<decltype(&compare), &compare>;
Теперь его можно использовать как компаратор:
std::set<X, Compare> set;
http://ideone.com/T2saIg
#include <iostream>
#include <set>
using namespace std;
struct cmp
{
bool operator() (const int &a, const int &b)
{
// returns true if a should go before b
return a > b;
}
};
int main()
{
set <int, cmp> s;
s.insert(2);
s.insert(20);
s.insert(12);
s.insert(-7);
for (int x : s)
cout << x << ' ';
return 0;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Я работаю с двумя функциями из сторонних библиотекОдна возвращает const char*, а другая принимает const u_char*
Создать пустой список указателей на объекты класса Круг, используя коллекции языка С++ (например, std::vector<T>)
Есть функция внутри метода, находящая необходимую клетку на поле: