crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в qSort и предикат сравнения ( LessThan lessThan )
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Andrewshkovskii Дата 15.11.2009, 18:53
  Спасибо, сказалась моя невнимательность:)
DEADHUNT Дата 15.11.2009, 18:41
 
static bool cmp(const Cluster *c1, const Cluster *c2){return c1->value() > c2->value(); }

т.к. QVector содержит указатели на Cluster.
Elfinit Дата 15.11.2009, 18:38
  1. сделай эту функцию static и передавай в qSort как Classname::cmp
2. ты сортируешь вектор указателей, а твоя функция сравнения принимает параметры-ссылки. сделай их тоже указателями.
Andrewshkovskii Дата 15.11.2009, 18:28
  есть класс, в нем есть структура :
private :
        struct Cluster
         {
           private :
            int value_;
            QSet<int> numbersOfItems_;
            QPoint centerPos;
            bool isPainted;
           public :
            Cluster();
            Cluster(int item1 ,int item2, int nValue);
            Cluster(int item1, int nValue);
            void setValue(int newValue);
            int value(){ return value_; }
            QSet<int> &numbersOfItems() {return numbersOfItems_;}
            void setPainted(bool is);
            QString toString(QStringList * lst);
            void append(Cluster * nClust);
          };


и функция для сравнения :
 public :
        bool cmp(const Cluster&  c1, const Cluster& c2){return c1.value() > c2.value();}


и необходимо отсортировать вектор такой вот :
QVector <Cluster * > bufvec;

По возрастанию..
вот так вот пробую :
        
qSort(bufvec.begin(),bufvec.end(), cmp);

и получаю два :
Цитата
error: passing 'const Model::Cluster' as 'this' argument of 'int Model::Cluster::value()' discards qualifiers


Неужели надо будет в отдельный файл функцию запихивать?..
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.7.2025, 5:16