1

例如 :

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-style :

   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>

4

1 回答 1

1

使用 java 风格的迭代器时需要获取下一项,如下所示:

 QMapIterator<QString,QString> j(i.next()); //no error
于 2014-12-25T20:48:25.793 回答