Алгоритм сортировки c ++ - PullRequest
3 голосов
/ 11 июля 2020
#include <iostream>
#include <array>
#include <algorithm>
using namespace std;
class Test
{
private:
    int value;
public:
    Test()
    {
 
    }
    Test(int _value)
    {
        value = _value;
    }
    bool operator<(Test&);
 
};
bool Test::operator<(Test& rValue) {
    return this->value < rValue.value;
}
int main()
{
    Test* arr = new Test[950];
    arr[0] = Test(5);
    arr[1] = Test(10);
    arr[2] = Test(7);
    arr[3] = Test(3);
    arr[4] = Test(10);
    sort(arr, arr + 5, [](Test& a, Test& b) { return a < b ? false : true; });
}

Алгоритм сортировки отлично работает до тех пор, пока не появятся объекты с таким же значением оценки.

PS Я знаю другой способ использовать сортировку и обратное.

Я использую Visual Studio 2019

ОШИБКА: ошибка подтверждения отладки! Выражение: недопустимый компаратор

1 Ответ

6 голосов
/ 11 июля 2020

Компаратор сортировки должен возвращать false для равных элементов, ваш возвращает true.

Попробуйте это вместо этого.

sort(arr, arr + 5, [](Test& a, Test& b) { return b < a; });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...