2014-09-02 2 views
1

Проект должен давать как случайное число, но это не важно, то это число случайных найти на первой карте и добавить во вторую карту.Как поставить один 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)); 
+0

если «рэнд» не является допустимым ключом в «карте» это не получится – cppguy

+0

Хотите взять пары ключ-значение случайным образом с одной карты, а затем помещать их в другую? Это ваш вопрос? – mhcuervo

+0

Как насчет 'myMap.insert (rand, map.take (rand))'? -> Обеспечить, чтобы вы удостоверились, что rand - это действительный ключ. – mhcuervo

ответ

0

Ваш код будет отличаться в зависимости от поведения вы хотите, когда 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)); 
    
+0

не работает, но я нахожу решение – mario

+0

@mario, если вы считаете, что ваше решение будет полезно для SO, отправьте его как ответ. В противном случае удалите свой вопрос. –

0

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

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