C++ 迭代时无法读取配置文件

C++ 迭代时无法读取配置文件,c++,qt,qmap,C++,Qt,Qmap,尝试读取配置文件时,访问迭代器时遇到问题。我的代码是: 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]); // d

尝试读取配置文件时,访问迭代器时遇到问题。我的代码是:

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
    }
}
void requestPLC::write(QMap映射)
{
迭代器i;
for(i=map.begin();i!=map.end();+i)
{
mConfig->reqPLC->datatype.value(映射[i]);
//在这里做点什么
}
}
我要做的是迭代我的映射并从配置文件中选择相应的值。我的错误如下所示:

“运算符[]”不匹配(操作数类型为“QMap” 和“QMap::iterator”) mConfig->reqPLC->datatype.value(映射[i]); ^


我知道这是由datatype.value(map[I])作为迭代器引起的,但我无法找到避免这种情况的方法。我需要在这里强制转换迭代器吗?

使用迭代器访问
QMap
键、值
可以通过

就你而言:

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
    }
}
void requestPLC::write(QMap映射)
{
迭代器i;
for(i=map.begin();i!=map.end();+i)
{
自动映射_值=i.值();
mConfig->reqPLC->datatype.value(映射值);
//在这里做点什么
}
}

使用迭代器访问
QMap
键、值
可以通过

就你而言:

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
    }
}
void requestPLC::write(QMap映射)
{
迭代器i;
for(i=map.begin();i!=map.end();+i)
{
自动映射_值=i.值();
mConfig->reqPLC->datatype.value(映射值);
//在这里做点什么
}
}

您需要从迭代器而不是迭代器本身提供密钥。在STL中,为了访问键,我会先为迭代器映射i->,然后使用[]操作符使用键访问映射。

您需要从迭代器而不是迭代器本身给出键。在STL中,为了访问键,我会先对迭代器进行i->映射,然后使用[]操作符使用键访问映射。

尝试
i.value()
获取值,或者
i.key()
获取键您需要给出迭代器的值,而不是迭代器本身。在stl中,为了访问键,我会先执行i->以使迭代器映射。对于值,请尝试
i.value()
;对于键,请尝试
i.key()
,您需要给出迭代器的值,而不是迭代器本身。在stl中,为了访问密钥,我会先对迭代器进行i->first映射。