Qt中的QMap在进行比较的时候,先要确定是否包含主键,否则直接比较的话它会直接默认的创建一个主键来进行。
比如
QMap<QString,int> _map;
_map["one"] = 1;
_map["two"] = 2;
// 在此时_map有两个元素
if (_map["three"] == 3)
{
// 在上面的if语句中进行比较的时候已经默认地进行了_map["three"] == 0的操作。
}
// 在此时,_map有三个元素,而此非本意
所以,为了准确地表达自己的意思,需要先进行contains()判断:
if (_map.contains("three") && _map["three"] == 3)
{
//
}
比如
QMap<QString,int> _map;
_map["one"] = 1;
_map["two"] = 2;
// 在此时_map有两个元素
if (_map["three"] == 3)
{
// 在上面的if语句中进行比较的时候已经默认地进行了_map["three"] == 0的操作。
}
// 在此时,_map有三个元素,而此非本意
所以,为了准确地表达自己的意思,需要先进行contains()判断:
if (_map.contains("three") && _map["three"] == 3)
{
//
}