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

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++ Игра "Стрельба из пушки" помогите если не сложно за ранее спс как сделать чтобы при изменении градусов пушка меняла свое положение (вверх,вниз)при выстреле нужно чтобы ядро оставляла след подробнее

Показать сообщение отдельно
Algiz
160 / 160 / 13
Регистрация: 23.02.2011
Сообщений: 347

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

16.06.2012, 15:02. Просмотров 1857. Ответов 5
Метки (Все метки)

Здравствуйте, у меня проблема: функция qSort не ест компаратор, если он объявлен как лямбда. Как это исправить?
вот код:

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
template<typename T>
void qSort(T* a, int from, int to, bool cmp(T,T))
{
    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;
}
вот что пишет компилер:
Код
tmp.cpp:46:54: error: no matching function for call to ‘qSort(int [7], int, int, main()::<lambda(int, int)>)’
tmp.cpp:46:54: note: candidate is:
tmp.cpp:8:6: note: template<class T> void qSort(T*, int, int, bool (*)(T, T))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru