如何在Qt中使用java风格的迭代器而不是stl-style?

时间:2014-12-25 20:29:20

标签: c++ qt iterator qtcore qmap

例如:

QList<QMap<QString,QString> > list

QList<QMap<QString,QString> >::iterator i;
    for (i = list.begin(); i != list.end(); ++i)
    {
        QMap<QString,QString>::iterator j;
        for (j = i->begin(); j != i->end(); ++j)
            qDebug() << j.key() << ": " << j.value() << endl;
    }

所以这个stl风格正在发挥作用。但我无法改写为java风格:

   QListIterator<QMap<QString,QString> > i(list);
    while (i.hasNext())
    {
        QMapIterator<QString,QString> j(i); //error 
        while (j.hasNext()) {
            j.next();
            qDebug() << j.key() << ": " << j.value() << endl;
        }
    }

我收到错误 - cannot convert parameter 1 from QListIterator<T>' to 'const QMap<Key,T>

1 个答案:

答案 0 :(得分:1)

使用java样式迭代器时需要获取下一个项目,如下所示:

 QMapIterator<QString,QString> j(i.next()); //no error