在 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 循环则提供了更简洁的语法。