迭代时无法读出配置文件

Unable to read out config file while iterating

我在尝试读取配置文件时无法访问迭代器。我的代码是:

void requestPLC::write(QMap <QString, QVariant> map)
{

QMap<QString, QVariant>::iterator i;

for (i = map.begin(); i != map.end(); ++i)
    {
        mConfig->reqPLC->datatype.value(map[i]);
        // do something here
    }
}

我想做的是遍历我的地图并从配置文件中选择相应的值。我的错误是这样的:

no match for ‘operator[]’ (operand types are ‘QMap’ and ‘QMap::iterator’) mConfig->reqPLC->datatype.value(map[i]); ^

我知道这是由于 datatype.value(map[i]) 是迭代器引起的,但我想不出避免这种情况的方法。我需要在这里转换我的迭代器吗?

使用迭代器访问 QMapkey, value 可以通过 iterator class

完成

你的情况:

void requestPLC::write(QMap <QString, QVariant> map)
{

    QMap<QString, QVariant>::iterator i;

    for (i = map.begin(); i != map.end(); ++i)
    {
        auto map_value = i.value();
        mConfig->reqPLC->datatype.value(map_value);
        // do something here
    }
}

您需要从迭代器而不是迭代器本身提供密钥。在 STL 中,我会先完成 i->first 以便迭代器进行映射,以便访问密钥,然后我使用密钥使用 [] 运算符访问映射。