Как убрать сортировку по алфавиту в QMultiMap - PullRequest
0 голосов
/ 03 мая 2019

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

В обычной функции C ++ MultiMap, я думаю, мы можем изменить метод сортировки

template<

    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class multimap;

Благодаря функции сравнения, но эта функция сравнения не существует в функции Qt QMultiMap

Функция Qt, определенная в qmap.h, выглядит следующим образом

 inline typename QMap<Key, T>::iterator insert(typename QMap<Key, T>::const_iterator pos, const Key &key, const T &value)
{ return QMap<Key, T>::insertMulti(pos, key, value); }

template <class Key, class T>
Q_INLINE_TEMPLATE typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const Key &akey,
                                                                            const T &avalue)
{
    detach();
    Node* y = d->end();
    Node* x = static_cast<Node *>(d->root());
    bool left = true;
    while (x != nullptr) {
        left = !qMapLessThanKey(x->key, akey);
        y = x;
        x = left ? x->leftNode() : x->rightNode();
    }
    Node *z = d->createNode(akey, avalue, y, left);
    return iterator(z);
}
...