我需要知道QMap
第二个值。 first()
和last()
等函数无用。我是否必须使用迭代器,某种循环?
QMap<int, QString> map;
map.insert(1, "Mario");
map.insert(2, "Ples");
map.insert(3, "student");
map.insert(4, "grrr");
答案 0 :(得分:7)
您无需迭代元素。首先通过values()
获取所有值,然后使用contains()
。
bool ValueExists(const QMap<int, QString> map, const QString valExists) const
{
return map.contains(valExists);
}
答案 1 :(得分:5)
如果您找到特定的键或值,您可以执行以下操作:
// Returns 1
int key1 = map.key( "Mario" );
// returns "student"
QString value3 = map.value( 3 );
或者您想迭代QMap中的所有项目吗?
答案 2 :(得分:0)
地图提供基于密钥(第一个参数)的快速访问。
所以,是的,如果你想知道一个值是否存在(第二个参数),你需要迭代地图值: -
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;
}
为简化代码,我们还可以使用值&#39; contains()方法,内部将迭代值,如上所述。