Как поместить один QMap в другой QMap
Проект должен давать как случайное число, но это не важно, тогда это количество случайных чисел найти на первой карте и добавить во вторую карту.
int rand = 2;
QPixmap pixmap1 = QPixmap (":/imag/sedam_one.jpg");
QPixmap pixmap2 = QPixmap (":/imag/gedam_one.jpg");
QPixmap pixmap3 = QPixmap (":/imag/tedam_one.jpg");
QMap<int, QPixmap> map;
map.insert(1, pixmap1);
map.insert(2, pixmap2);
map.insert(3, pixmap3);
QMap<int, QPixmap> myMap;
myMap.insert(map.key(rand), map.value(rand));
3 ответа
Ваш код будет отличаться в зависимости от поведения, которое вы хотите, когда rand
не является действительным ключом.
Если вы хотите игнорировать ключ, если его нет в
map
, вы бы использовали:if ( map.find(rand) != map.end() ) { myMap.insert(map.key(rand), map.value(rand)); }
Если вы хотите создать значение по умолчанию, когда ключ отсутствует, карта не будет создана
if
проверьте из приведенного выше кода и просто используйте код, который у вас есть:myMap.insert(map.key(rand), map.value(rand));
Вот один из способов сделать это:
int rand = 2;
QPixmap pixmap1 = QPixmap (":/imag/sedam_one.jpg");
QPixmap pixmap2 = QPixmap (":/imag/gedam_one.jpg");
QPixmap pixmap3 = QPixmap (":/imag/tedam_one.jpg");
QMap<int, QPixmap> map;
map.insert(1, pixmap1);
map.insert(2, pixmap2);
map.insert(3, pixmap3);
QMap<int, QPixmap> myMap;
myMap.insert(rand, map.value(rand));
Обратите внимание на последнюю строку. map.key(rand)
должно быть просто rand
потому что метод map.key()
требует, чтобы вы указали значение, такое как QPixmap
Внимание: это приведет к перезаписи значений. Вы можете использовать QMultiMap, если хотите иметь несколько ключей.
QMap<QString,QString> sneed;
QMap<QString,QString> feed;
QMapIterator<QString,QString> i_Map(feed);
while ( i_Map.hasNext() ) {
i_Map.next();
sneed.insert( i_Map.key(), i_Map.value() );
}