Название: [Решено] std::sort (predicate) Отправлено: Igors от Августа 31, 2010, 12:07 Добрый день
Надо сортировать указатели, определять < для указателей стремно, поэтому решил прорваться через предикат. Фрагмент ниже работает Код Однако если создать еще 1 template класс (раскомментировать части выше) то отсыпает ошибку Цитировать error: no matching function for call to 'sort(__gnu_cxx::__normal_iterator<int**, std::vector<int*, std::allocator<int*> > >, __gnu_cxx::__normal_iterator<int**, std::vector<int*, std::allocator<int*> > >, <unknown type>)' Ну и конечно int и float просто для примера. Как выкрутиться? Спасибо Название: Re: std::sort (predicate) Отправлено: Karl-Philipp от Августа 31, 2010, 12:20 подсказывали как-то мне здесь: как сортировать указатели на объекты с помощью функторов:
Код
Название: Re: std::sort (predicate) Отправлено: Igors от Августа 31, 2010, 12:29 подсказывали как-то мне здесь: как сортировать указатели на объекты с помощью функторов: Это то же самое. Третий аргумент std::sort может быть чем угодно, абы умел сравнить 2 элемента. Типы для него не определены. Проблема в том что все это перестает работать для 2 и более вариантов templateНазвание: [Решено] std::sort (predicate) Отправлено: Igors от Августа 31, 2010, 12:55 Ага, дошло :) Надо дать тип чтобы он смог разобраться какую ф-цию вызывать. Так работает:
Код
Название: Re: std::sort (predicate) Отправлено: BRE от Августа 31, 2010, 12:59 Это то же самое. Третий аргумент std::sort может быть чем угодно, абы умел сравнить 2 элемента. Типы для него не определены. Проблема в том что все это перестает работать для 2 и более вариантов template А как компилятор может определить какую из функций Comp ему использовать?Код
Название: Re: std::sort (predicate) Отправлено: Igors от Августа 31, 2010, 13:04 Код
Название: Re: std::sort (predicate) Отправлено: BRE от Августа 31, 2010, 13:18 Так пройдет для int и float, но не для др. структур требующих более сложного сравнения. Надо вызывать перекрытые ф-ции из Comp (который знает тип) Код
Название: Re: [Решено] std::sort (predicate) Отправлено: Igors от Августа 31, 2010, 13:28 То да, но я сортирую указатели, перекрывать для них > < мне кажется опасным
Название: Re: [Решено] std::sort (predicate) Отправлено: BRE от Августа 31, 2010, 13:33 То да, но я сортирую указатели, перекрывать для них > < мне кажется опасным А где я перекрыл сравнение указателей? |