Создание QHash с помощью QStringList в C++

В С++ я пытаюсь создать специализированный QHash следующим образом:

QHash<QString, QStringList> myhash;

Так что я могу хранить этот тип данных:

QHash key    QStringList values
----------   ------------------
A            1
             2
             3
B            5
             6

У меня возникли проблемы с синтаксисом C++, чтобы правильно построить хэш и как получить значения хэша. Например, если дано B, я хочу зациклиться и вернуть 5,6.

Вот моя взломанная попытка добавить логику к хэшу, когда нужно добавить новую пару ключ-значение:

QHash<QString, QStringList> myhash;

key = "A";
value = "2";

if (myhash.contains(key) ) {
    QStringList mylist = myhash.value(key);    
    mylist.append(value);    
} else {
    QStringList mylist;
    mylist.append(value);
    myhash.insert( key, mylist);
}

Я не уверен, работает ли это, так как мне не удалось создать логику цикла извлечения для myhash.

Может ли кто-нибудь помочь мне построить и получить данные из такого QHash?


person panofish    schedule 27.05.2015    source источник
comment
panfish, не совсем понятно по вашей задаче. Укажите, что возвращает поиск для A, и добавьте C, и что он вернет для него?   -  person Alexander V    schedule 28.05.2015


Ответы (1)


Я думаю, что все, что вам нужно сделать, чтобы добавить значение в QStringList в вашем QHash, это:

QStringList & mylist = myhash[key];  // will create and insert an empty QStringList if necessary
mylist.append(value);
person Jeremy Friesner    schedule 27.05.2015