Как поместить один 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));

person mario    schedule 02.09.2014    source источник
comment
если rand не является допустимым ключом на карте, это не удастся   -  person cppguy    schedule 02.09.2014
comment
Вы хотите случайным образом взять пары ключ-значение из одной карты, а затем поместить их в другую? Это твой вопрос?   -  person mhcuervo    schedule 03.09.2014
comment
А как насчет myMap.insert(rand, map.take(rand)) ? -› При условии, что вы сначала убедитесь, что rand является допустимым ключом.   -  person mhcuervo    schedule 03.09.2014


Ответы (2)


Ваш код будет отличаться в зависимости от поведения, которое вы хотите, когда 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));
    
person R Sahu    schedule 02.09.2014
comment
@mario, если вы считаете, что ваше решение будет полезно для SO, опубликуйте его как ответ. В противном случае удалите свой вопрос. - person R Sahu; 03.09.2014

Вот один из способов сделать это:

  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

person mike510a    schedule 24.04.2016