在这篇文章再见,来自 KDAB 的 Q_FOREACH,他们警告说,基于范围的for
可能会导致 Qt 容器的分离。
另请参阅:在 Qt 中正确使用 C++11 基于范围的 for 循环
我知道这for
会导致分离,因为如果容器不是 const,它会调用一些非常量迭代器。返回值
是否相同?
该函数是 const 所以我的地图不会分离,但返回值是按值传递的,所以我会复制 QList 两次吗?QHash::keys()
keys()
那么,我应该像这样循环吗?
for(auto key : qAsConst(map.keys())) {
// do something with key or map.value(key)
}