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

Ошибка сортировки: Invalid operator< - C++

Восстановить пароль Регистрация
 
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
10.07.2014, 22:45     Ошибка сортировки: Invalid operator< #1
Почему так работает нормально:
Кликните здесь для просмотра всего текста
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
#include "iostream"
#include "vector"
#include "algorithm "
#include "iterator"
 
using std::vector;
using std::cout;
using std::endl;
bool func(int, int);
bool func1(int, int);
typedef std::ostream_iterator<int> out_in;
 
int main()
{
    vector<int> a1{ 4, 2, 3, 234, 234234, 2, 234, 32, 423, 42, 34, 23, 21, 23, 1 };
    vector<bool(*)(int, int)> aa;
    aa.push_back(func);
    aa.push_back(func1);
    std::sort(a1.begin(), a1.end(), aa[0]);
    std::copy(a1.begin(), a1.end(), out_in(cout, " "));
 
    system("pause");
 
 
    return 0;
 
 
}
bool func(int a, int b)
{
    return a > b;
}
 
 
bool func1(int a, int b)
{
    return b > a;
}

а если заменить на :

C++
1
2
3
4
5
6
bool func1(int a, int b)
{   if(a>b)
    return false;
    else
    return true;
}
То выдает ошибку :
Миниатюры
Ошибка сортировки: Invalid operator<  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
10.07.2014, 22:59     Ошибка сортировки: Invalid operator< #2
так функции то неэквивалентны
посмотри что вернут когда аргументы равны
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
10.07.2014, 23:13  [ТС]     Ошибка сортировки: Invalid operator< #3
C++
1
2
3
4
if (a>b || a==b)
        return false;
    else
        return true;
Заработало, затупил я )))
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,043
10.07.2014, 23:20     Ошибка сортировки: Invalid operator< #4
Цитата Сообщение от MousePro Посмотреть сообщение
if (a>b || a==b)
а так не проще
C++
1
if(a>=b)
Добавлено через 1 минуту
обратное к строгому сравнению, нестрогое сравнение
!больше = не больше=меньше или равно
!меньше = не меньше=больше или равно
!равно = не равно
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
11.07.2014, 03:34     Ошибка сортировки: Invalid operator< #5
MousePro, а не проще ли так?
C++
1
2
3
4
bool func(int a, int b)
{
    return a > b;
}
C++
1
2
3
4
bool func2(int a, int b)
{
    return a < b;
}
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366
11.07.2014, 09:53  [ТС]     Ошибка сортировки: Invalid operator< #6
Я так и сделал ( спойлер откройте)
Yandex
Объявления
11.07.2014, 09:53     Ошибка сортировки: Invalid operator<
Ответ Создать тему
Опции темы

Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru