map / set iterators不兼容 - 检查map中是否存在键

时间:2013-12-06 19:57:14

标签: c++ map

当函数执行时,我有以下错误: map / set iterators不兼容。 我做错了什么?

bool isAuto(string table_name, string field_name, SCHEMA schema)
{
    if (schema[table_name][field_name].find("max") == schema[table_name]["field_name"].end())
    {
        return false;
    }

    return schema[table_name][field_name]["auto"] == "true" && schema[table_name][field_name]["type"] == "int";
}

数据:

SCHEMA schema;
        schema["przedmioty"]["id"]["type"] = "int";
        schema["przedmioty"]["id"]["auto"] = "true";
        schema["przedmioty"]["nazwa"]["type"] = "string";
        schema["przedmioty"]["semestr"]["type"] = "int";
        schema["przedmioty"]["semestr"]["max"] = "10";
        schema["przedmioty"]["semestr"]["min"] = "1";

类型定义:

typedef map<string, map<string, map<string, string> > > SCHEMA;

1 个答案:

答案 0 :(得分:3)

schema[table_name][field_name].find("max") == 
    schema[table_name]["field_name"].end()

您的第二个field_name在引号中,因此它会比较来自两个不同地图的迭代器(除非field_name的值为“field_name”),这是无效的。