Qt中如何 给QMultiMap<QString,QStringList>数据结构里面的相同的key去重,请给我完整代码
时间: 2024-02-18 22:02:34 浏览: 64
Qt中QMap和QMultimap使用
可以使用Qt中的QSet来实现对QMultiMap中相同key的去重。以下是完整代码:
```cpp
#include <QCoreApplication>
#include <QMultiMap>
#include <QDebug>
#include <QSet>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QMultiMap<QString, QStringList> myMap;
myMap.insert("key1", QStringList() << "value1" << "value2");
myMap.insert("key2", QStringList() << "value3" << "value4");
myMap.insert("key1", QStringList() << "value5" << "value6" << "value7");
// 使用QSet去重
QMultiMap<QString, QStringList> uniqueMap;
foreach(const QString& key, myMap.uniqueKeys()) {
QSet<QStringList> valuesSet;
foreach(const QStringList& value, myMap.values(key)) {
valuesSet.insert(value);
}
uniqueMap.insert(key, valuesSet.toList());
}
// 输出去重后的结果
foreach(const QString& key, uniqueMap.uniqueKeys()) {
qDebug() << key << ":";
foreach(const QStringList& value, uniqueMap.values(key)) {
qDebug() << value;
}
}
return a.exec();
}
```
以上代码中,我们首先定义了一个QMultiMap<QString, QStringList>类型的myMap,并向其中插入了三个键值对,其中包含了两个相同的key。
接着我们使用foreach循环遍历myMap中所有不同的key,并使用QSet对该key对应的所有value去重。最后,我们将去重后的键值对插入到uniqueMap中,并使用foreach循环输出去重后的结果。
注意,这里我们将去重后的value使用QSet转换为QList存储,因为QSet是无序的,而QMultiMap存储的是有序的键值对。
阅读全文