迭代时无法读出配置文件
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]) 是迭代器引起的,但我想不出避免这种情况的方法。我需要在这里转换我的迭代器吗?
使用迭代器访问 QMap
的 key, 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 以便迭代器进行映射,以便访问密钥,然后我使用密钥使用 [] 运算符访问映射。
我在尝试读取配置文件时无法访问迭代器。我的代码是:
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]) 是迭代器引起的,但我想不出避免这种情况的方法。我需要在这里转换我的迭代器吗?
使用迭代器访问 QMap
的 key, 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 以便迭代器进行映射,以便访问密钥,然后我使用密钥使用 [] 运算符访问映射。