赞
踩
QMap是Qt中的一个关联容器,它提供了一种键值对的映射关系。可以通过键快速查找对应的值。遍历QMap可以使用以下几种方式:
QMap<QString, int> map;
map.insert("a", 1);
map.insert("b", 2);
map.insert("c", 3);
QMap<QString, int>::iterator itor;
for (itor = map.begin(); itor != map.end(); ++itor)
{
qDebug() << itor.key() << ":" << itor.value();
}
for (QMap<QString, int>::const_iterator itor = map.constBegin(); itor != map.constEnd(); ++itor)
{
qDebug() << itor.key() << ":" << itor.value();
}
QMapIterator<QString, int> itor(map);
while (itor.hasNext())
{
itor.next(); //移动到下一个元素
qDebug() << itor.key() << ":" << itor.value();
}
for (auto &pair : map.toStdMap())
{
qDebug() << pair.first << ":" << pair.second;
}
for (const auto &key : map.keys())
{
qDebug() << key << ":" << map.value(key);
}
Q_FOREACH在Qt 2 中被引入,在 Qt 4 中进行了重构和改进,成为了一个更加强大和灵活的语言结构。
foreach(const QString &key, map.keys())
{
qDebug() << key << ":" << map.value(key);
}
std::for_each()接受一个迭代器范围和一个函数对象,函数对象可以是lambda表达式,用于处理每个遍历到的元素。
std::for_each(map.constBegin(), map.constEnd(), [](const auto &item) {
qDebug() << item.key() << ":" << item.value();
});
使用C++11的for循环遍历和std::for_each遍历QMap的方式最为常用和简洁,效率也比较高,占用资源较少。但是,不同的遍历方式适用于不同的场景,需要根据具体情况选择合适的遍历方式。如果需要修改QMap中的元素,应该使用迭代器进行遍历。如果只需要读取QMap中的元素,可以使用const迭代器或者C++11的for循环遍历。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。