1.概要
QMap<int, QString>::const_iterator i = map.constBegin();
for (const QString &value : map.values())
2.内容
在Qt中,QMap
是一个模板类,它提供了一个树状结构的字典,每一个键(key)对应一个值(value)。如果你只想遍历 QMap
中的值,而忽略键,可以使用 QMap
提供的迭代器或者 values()
方法。
以下是几种只遍历 QMap
中值的方法:
方法一:使用迭代器
你可以使用 QMap
的迭代器,但只访问值部分。
QMap<int, QString> map;
map.insert(1, "one");
map.insert(2, "two");
map.insert(3, "three");
QMap<int, QString>::const_iterator i = map.constBegin();
while (i != map.constEnd()) {
qDebug() << i.value();
++i;
}
方法二:使用 values()
方法
QMap
提供了一个 values()
方法,它返回一个包含所有值的 QList
。你可以直接遍历这个 QList
。
QMap<int, QString> map;
map.insert(1, "one");
map.insert(2, "two");
map.insert(3, "three");
QList<QString> values = map.values();
for (const QString &value : values) {
qDebug() << value;
}
方法三:使用 Java 风格的迭代器
如果你更喜欢 Java 风格的迭代器,可以使用 QMap::values()
加上 Java 风格的迭代。
QMap<int, QString> map;
map.insert(1, "one");
map.insert(2, "two");
map.insert(3, "three");
for (auto it = map.values().cbegin(); it != map.values().cend(); ++it) {
qDebug() << *it;
}
方法四:使用 C++11 范围循环
如果你使用的是 C++11 或更高版本,可以利用范围循环来简化代码。
QMap<int, QString> map;
map.insert(1, "one");
map.insert(2, "two");
map.insert(3, "three");
for (const QString &value : map.values()) {
qDebug() << value;
}
这些方法都可以有效地遍历 QMap
中的值,而忽略键。选择哪种方法取决于你的具体需求和代码风格偏好。