【问题标题】:How to put one QMap into another QMap如何将一个 QMap 放入另一个 QMap
【发布时间】:2014-09-02 18:57:36
【问题描述】:

项目应该给出随机数,但这并不重要,然后在第一张地图中找到随机数并添加到第二张地图中。

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));

【问题讨论】:

  • 如果“rand”不是“map”中的有效键,则会失败
  • 您想从一个映射中随机获取键值对,然后将它们放入另一个映射中吗?这是你的问题吗?
  • myMap.insert(rand, map.take(rand)) 怎么样? -> 前提是您首先确保 rand 是一个有效的密钥。

标签: c++ qt qmap


【解决方案1】:

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));
    

【讨论】:

  • @mario,如果您认为您的解决方案对 SO 有用,请将其作为答案发布。否则,请删除您的问题。
【解决方案2】:

这是一种方法:

  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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多