Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ QMap + qsort

Автор: breeve 11.5.2011, 1:15

Не пойму в чем дело пытаюсь отсортировать 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

А я не пойму зачем сортировать ассоциативный контейнер, да ещё по значению. У него смысл другой, нежели чем у списка. Там же нет метода для вставки элемента на конкретную позицию, а есть просто добавление в контейнер.

Автор: Litkevich Yuriy 13.5.2011, 8:42

Цитата(breeve @ 11.5.2011, 4:15) *
Как я понимаю qsort как раз то что надо.
нет

Автор: madzohan 24.11.2011, 23:26

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

Автор: ssoft 25.11.2011, 8:39

Цитата(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

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

Замените контейнер QMap<QChar, int> на QVector<QPair<QChar, int> > и сортируйте на здоровье.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)