我有QHash<QString, QHash<quint64, QElapsedTimer*> myNestedQHash;
当我尝试时
foreach (QHash<quint64, QElapsedTimer*> stat, myNestedQHash.values(someStr))
我明白了
error: macro "Q_FOREACH" passed 3 arguments, but takes just 2
难道不能像我那样在嵌套的 QHash 上循环吗?
最佳答案
为什么不使用
for (QHash<QString, QHash<quint64, QElapsedTimer*>::iterator it = myNestedQHash.begin(); it != myNestedQHash.end(); ++it)
{...}
相反?我认为 Q_FOREACH
会创建一个拷贝,因此性能也会更好......
/编辑:
foreach 只是 Q_FOREACH 宏的定义...所以编译器看到它并且会接受 2 个值。因为你有一个额外的逗号,它会看到 3 个参数。您会找到所有信息 here .
关于c++ - 使用 foreach 遍历嵌套的 QHash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17523871/