如何在Qmap中查找特定值

mar*_*rio 2 c++ qt qmap

我需要知道QMap第二个价值.功能喜欢first()last()没用.我是否必须使用迭代器,某种循环?

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

efe*_*ion 7

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

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

// returns "student"
QString value3 = map.value( 3 );
Run Code Online (Sandbox Code Playgroud)

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


Eze*_*zee 7

您不需要迭代元素.首先获取所有值values(),然后使用contains().

bool ValueExists(const QMap<int, QString> map, const QString valExists) const
{
    return map.contains(valExists);
}
Run Code Online (Sandbox Code Playgroud)


The*_*ght 1

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

所以,是的,如果您想知道某个值是否存在(第二个参数),您需要迭代映射值:-

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;
} 
Run Code Online (Sandbox Code Playgroud)

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