Я использую 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);
}