在 Qt 中,QMap 是一个基于红黑树实现的关联容器,它存储了键值对,并且按键的顺序自动排序。遍历 QMap 可以通过几种不同的方式来完成,包括使用迭代器、范围基础的 for 循环(C++11 及以上版本),或者 Qt 的 QMap::keys() 和 QMap::values() 方法配合 foreach 循环(如果你使用的是较旧的 Qt 版本)。
以下是使用迭代器和范围基础的 for 循环遍历 QMap 的示例:
使用迭代器遍历 QMap
QMap<QString, int> map; | |
map["apple"] = 1; | |
map["banana"] = 2; | |
map["cherry"] = 3; | |
QMap<QString, int>::const_iterator it; | |
for (it = map.constBegin(); it != map.constEnd(); ++it) { | |
qDebug() << "Key:" << it.key() << "Value:" << it.value(); | |
} |
使用范围基础的 for 循环遍历 QMap(C++11)
如果你的编译器支持 C++11,你可以使用更简洁的范围基础的 for 循环:
QMap<QString, int> map; | |
map["apple"] = 1; | |
map["banana"] = 2; | |
map["cherry"] = 3; | |
for (const auto &pair : map) { | |
qDebug() << "Key:" << pair.first << "Value:" << pair.second; | |
} |
在这个例子中,auto 关键字用于自动推断 pair 的类型,它是 QMap 中的一个键值对。pair.first 是键,pair.second 是值。
确保你的项目配置中启用了 C++11 支持,以便使用范围基础的 for 循环和 auto 关键字。在 Qt Creator 中,这通常是通过在项目文件(.pro)中添加 CONFIG += c++11 来实现的。
选择哪种遍历方法取决于你的具体需求和编码风格。迭代器提供了更多的灵活性,而范围基础的 for 循环则提供了更简洁的语法。
2084

被折叠的 条评论
为什么被折叠?



