c++ - 使用 foreach 遍历嵌套的 QHash

标签 c++ qt foreach qhash

我有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/

相关文章:

c++ - 按指定的分隔符拆分 wstring

c++ - 派生模板类访问基类成员数据

c++ - 如何使用传入套接字识别(或连接)用户标识?

c++ - 使用 Core foundation 向 Mountain Lion 通知中心发送消息

java - 哪个性能更好: for each or iterator in LinkedList?

c++ - 了解Linux虚拟内存: valgrind's massif output shows major differences with and without --pages-as-heap

c++ - C++11 中的递归 lambda 实现

c++ - Qt-Qml : Binding checkbox to QAbstractListModel

c# - 对资源使用 foreach 吗? (C#)

mysql 查询 - 在可样式化的 div 中使用 foreach 回显产品组