需求
Qt 中 QMap 有哪些遍历方法?
解决
迭代器
只读
for (QMap<QString, int>::const_iterator itor = map.constBegin(); itor != map.constEnd(); ++itor)
{
qDebug() << itor.key() << ":" << itor.value();
}
可读可写
QMap<QString, int>::iterator itor;
for (itor = map.begin(); itor != map.end(); ++itor)
{
qDebug() << itor.key() << ":" << itor.value();
}
可读可写,更多功能,比如 remove
QMapIterator<QString, int> itor(map);
while (itor.hasNext())
{
itor.next(); //移动到下一个元素
qDebug() << itor.key() << ":" << itor.value();
}
c++11 遍历
toStdMap
for (auto &pair : map.toStdMap())
{
qDebug() << pair.first << ":" << pair.second;
}
keys
for (const auto &key : map.keys())
{
qDebug() << key << ":" << map.value(key);
}
Q_FOREACH
foreach(const QString &key, map.keys())
{
qDebug() << key << ":" << map.value(key);
}
std::for_each()
std::for_each(map.constBegin(), map.constEnd(), [](const auto &item) {
qDebug() << item.key() << ":" << item.value();
});