QT中如何将QMultiMap<QString, QStringList> 转换为QMap<QString, QStringList>
时间: 2024-02-18 13:02:49 浏览: 176
Qt中QMap和QMultimap使用
`QMultiMap`和`QMap`都是关联容器,但是它们的插入方式不同。`QMap`要求每个键只能对应一个值,而`QMultiMap`允许每个键对应多个值。
因此,将`QMultiMap`转换为`QMap`时,需要考虑如何处理多个值的情况。一种方法是将每个键对应的所有值合并为一个字符串,然后将该字符串作为单个值插入到`QMap`中。
以下是完整代码:
```
QMultiMap<QString, QStringList> multiMap;
multiMap.insert("key1", QStringList() << "value1" << "value2");
multiMap.insert("key2", QStringList() << "value3" << "value4");
QMap<QString, QStringList> map;
foreach(const QString& key, multiMap.uniqueKeys()) {
QStringList values;
foreach(const QStringList& value, multiMap.values(key)) {
values.append(value.join(", "));
}
map.insert(key, values);
}
qDebug() << map; // 输出 { "key1": ["value1, value2"], "key2": ["value3, value4"] }
```
以上代码中,我们构造了一个`QMultiMap<QString, QStringList>`类型的对象`multiMap`,其中包含了两个键值对。然后使用`foreach`循环将每个键对应的所有值合并为一个字符串,并将该字符串作为单个值插入到`QMap`类型的对象`map`中,最后输出`map`的值。
阅读全文