#include #include #include #include bool compar(int a, int b) { return (a+b)%2 != 0 ? a%2 != 0 : a < b; } struct Evens { bool operator()(int a, int b) { return (a+b)%2 != 0 ? a%2 == 0 : b < a; } }; template void printVec(const std::vector& vec) { copy(vec.cbegin(), vec.cend(), std::ostream_iterator(std::cout, " ")); std::cout << '\n'; } int main() { std::vector vec{2, 5, 2, 9, 1, 5, 7, 4}; printVec(vec); sort(vec.begin(), vec.end(), compar); printVec(vec); sort(vec.begin(), vec.end(), Evens{}); printVec(vec); sort(vec.begin(), vec.end(), [](int a, int b) {return b < a;}); printVec(vec); }