crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> QMap + qsort
breeve
  опции профиля:
сообщение 11.5.2011, 1:15
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 188
Регистрация: 26.12.2009
Пользователь №: 1336

Спасибо сказали: 9 раз(а)




Репутация:   1  


Не пойму в чем дело пытаюсь отсортировать QMap<QChar, int> по int.
Как я понимаю qsort как раз то что надо. Но столкнулся с множеством ошибок.
И причем все ошибки указывают на QAlgorithms.h
Code
QMap<QChar, int> map;
    for(int i = 0; i < text.size(); i++)
    {
        if(!text.at(i).isLetter())
            continue;
        QChar ch = text.at(i).toUpper();
        if(!map.contains(ch))
        {
            map.insert(ch, 1);
        }
        else
        {
            map[ch]++;
        }
    }
    qSort(map);

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 11.5.2011, 22:01
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


А я не пойму зачем сортировать ассоциативный контейнер, да ещё по значению. У него смысл другой, нежели чем у списка. Там же нет метода для вставки элемента на конкретную позицию, а есть просто добавление в контейнер.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.5.2011, 8:42
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(breeve @ 11.5.2011, 4:15) *
Как я понимаю qsort как раз то что надо.
нет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_madzohan_*
сообщение 24.11.2011, 23:26
Сообщение #4





Гости








    


Кто сказал что там нет вставки в N позицию? - Просто передвигаешь итератор к N, а дальше:
QMap Public Functions: iterator insert ( const Key & key, const T & value )
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 25.11.2011, 8:39
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


Цитата(madzohan @ 25.11.2011, 0:26) *
Кто сказал что там нет вставки в N позицию? - Просто передвигаешь итератор к N, а дальше:
QMap Public Functions: iterator insert ( const Key & key, const T & value )


И нифига, будет вставка в контейнер и возврат итератора, куда была произведена вставка.

QMap - это отображение одного типа данных в другой, использующий упорядочивание элементов по ключу, его нельзя отсортировать по своему.

Если хочется применить упорядочивание, то необходимо преобразовать QMap< QChar, int > хотя бы в QList< QPair< QChar, int > >.
Написать функцию проверки на меньше для QPair< QChar, int > и использовать ее в void qSort ( RandomAccessIterator begin, RandomAccessIterator end, LessThan lessThan ).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 25.11.2011, 12:42
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(breeve @ 11.5.2011, 2:15) *
Не пойму в чем дело пытаюсь отсортировать QMap<QChar, int> по int.

Замените контейнер QMap<QChar, int> на QVector<QPair<QChar, int> > и сортируйте на здоровье.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 12.11.2019, 1:15