如何在 Qmap 中找到特定值

新手上路,请多包涵

我需要知道 QMap 第二个值。 first()last() 之类的功能是没用的。我必须使用迭代器,某种循环吗?

  QMap<int, QString> map;
 map.insert(1, "Mario");
 map.insert(2, "Ples");
 map.insert(3, "student");
 map.insert(4, "grrr");

原文由 mario 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

地图提供基于键(第一个参数)的快速访问。

所以,是的,如果你想知道一个值是否存在(第二个参数),你需要遍历映射值:-

 bool ValueExists(const QMap<int, QString> map, const QString valExists)
{
    QList<QString> valuesList = map.values(); // get a list of all the values
    foreach(QString value, valuesList)
    {
        if(value == valExists)
        {
            return true;
        }
    }
    return false;
}

为了简化代码,我们还可以使用 values 的 contains() 方法,该方法在内部将迭代这些值,如上所示。

原文由 TheDarkKnight 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您找到特定的键或值,您可以执行以下操作:

 // Returns 1
int key1 = map.key( "Mario" );

// returns "student"
QString value3 = map.value( 3 );

还是您想遍历 QMap 中的所有项目?

原文由 eferion 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题