Как поместить один 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 не является действительным ключом.

  1. Если вы хотите игнорировать ключ, если его нет в map, вы бы использовали:

    if ( map.find(rand) != map.end() )
    {
      myMap.insert(map.key(rand), map.value(rand));
    }
    
  2. Если вы хотите создать значение по умолчанию, когда ключ отсутствует, карта не будет создана 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() );
}
Другие вопросы по тегам