Я хочу отсортировать вектор v, используя
std::sort(v.begin(),v.end(),cmpr);
, где моя функция cmpr равна
bool cmpr(int a,int b, int c) { return a%c <= b%c; }
Теперь я хочу знать, как я могу передать c?
Вы можете использовать лямбду , чтобы обернуть компаратор. Полный пример:
#include <algorithm> #include <iostream> auto make_cmpr(int c) { return [c](int a, int b) { return a%c <= b%c; }; } int main() { int a[5] = {2, 4, 1, 3, 5}; std::sort(a, a + 5, make_cmpr(3)); /* or directly int c = 3; std::sort(a, a + 5, [c](int a, int b) { return a%c <= b%c; } ); */ for (int e : a) std::cout << e << ' '; }