Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > STL сортировка


Автор: TGrey 21.1.2010, 17:41
Добрый день. Нужно отсортировать вектор с пользовательским типом.
Просмотрел статьи, там вроде написано, как писать, но у меня ошибка возникает
Код

bool Desktop::sorthelper(IObject *a, IObject *b)
{
    return (a->ZOrder < b->ZOrder );
}

void Desktop::SortbyZ()
{
    std::sort<IObject*>(elements.begin, elements.end, sorthelper);
}

Цитата

error C2664: 'void __cdecl std::sort(class IObject *,class IObject *,bool (__thiscall *)(class IObject *,class IObject *))' : cannot convert parameter 1 from 'class IObject
 *const *(void) const ' to 'class IObject *'

Что с ним делать, подскажите пожалуйста.

Автор: Alek86 21.1.2010, 17:43
так?
Код
bool Desktop::sorthelper(const IObject *a, const IObject *b)

Автор: TiKKi 21.1.2010, 18:29
Код

std::sort<IObject*>(elements.begin(), elements.end(), sorthelper);

Наверно так smile

Автор: TGrey 21.1.2010, 19:01
Цитата(TiKKi @ 21.1.2010,  18:29)
Код

std::sort<IObject*>(elements.begin(), elements.end(), sorthelper);

Наверно так smile

Упс... Пропустил.

В итоге вот как получилось
Код

bool sorthelper( IObject *a, IObject *b)
{
    return (a->ZOrder < b->ZOrder );
}

void Desktop::SortbyZ()
{
    std::sort(elements.begin(), elements.end(), sorthelper);
}

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)