Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++0x lambda (функция qSort не ест компаратор) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как выполнить распараллеливание с помощью OpenMP http://www.cyberforum.ru/cpp-beginners/thread607057.html
Доброго дня. У меня есть две функции. void A(const vector <double> &a){ //что-то считаем c ним } void B(const vector <double> &a, const vector <double> &b){
C++ Поиск нулевых значений в матрице #include <iostream> #include <cstdlib> #include <ctime> #include <iomanip> using namespace std; int main() { setlocale(0, "rus"); const int N = 3; // размер матрицы http://www.cyberforum.ru/cpp-beginners/thread607045.html
Найти площадь фигуры, получающейся в результате объединения прямоугольников C++
Помогите пожалуйста решить мне задачу... На координатной плоскости задано N прямоугольников со сторонами, параллельными координатным осям. Найти площадь фигуры, получающейся в результате...
C++ В единственную строку вывести подстроку с наибольшим количеством букв, встречающихся один раз
Здравствуйте. Нужна ваша помощь решить данную задачу, буду очень благодарен... В заданной строке символов из заглавных латинских букв найти подстроку, которая включает наибольшее количество букв,...
C++ Составить программу, содержащую сведения о пациентах глазной клиники http://www.cyberforum.ru/cpp-beginners/thread606998.html
Составить программу, содержащую сведения о пациентах глазной клиники. Информация содержит: фамилия пациента, пол, возраст, диагнов, адрес, фамилия врача. Вывести список пациентов старше Х лет;...
C++ Игра "Стрельба из пушки" помогите если не сложно за ранее спс как сделать чтобы при изменении градусов пушка меняла свое положение (вверх,вниз)при выстреле нужно чтобы ядро оставляла след подробнее

Показать сообщение отдельно
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
16.06.2012, 16:43
предикат нужно делать параметром шаблона, только так можно абстагироваться от функтора/указателя на функцию/лямбды
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
using namespace std;
 
template<typename T, class Predicate>
void qSort(T* a, int from, int to, Predicate cmp)
{
    if (to - from < 1)
        return;
    auto mid = (to + from) / 2;
    auto e = a[mid];
    int i = from;
    int j = to;
    while(i < j)
    {
        for(; i < mid; i++)
        {
            if (cmp(a[i],e))
                break;
        }
        for(; j > mid; j--)
        {
            if (cmp(e,a[j]))
                break;
        }
        swap(a[i],a[j]);
    }
    qSort(a,from,mid,cmp);
    qSort(a,mid+1,to,cmp);
}
 
template<typename T>
void printArray(T* a, int len)
{
    for(int i=0; i<len; i++)
        cout << a[i] << ' ';
    cout << endl;
}
 
int main()
{
    int a[] = {1,6,4,5,2,3,7};
    printArray(a,7);
    qSort(a,0,6,[](int a, int b) -> bool {return a > b;});
    printArray(a,7);
    return 0;
}
3
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru