Qt QMultiMap

头图

QMultiMap

文章目录

  • QMultiMap
    • 摘要
    • QMultiMap
    • QMultiMap 特点
    • 代码示例

关键字: QtQMultiMap容器键值键值重复

摘要

今天在观摩小伙伴撸代码的时候,突然听到了QMultiMap自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发现自己是个水货,赶紧补充一下知识点。今天就学习一下QMultiMap

QMultiMap

QMultiMap 是 Qt 框架中的一个容器类,用于存储键值对的多重映射。它可以存储多个具有相同键的值,并且可以按照键的顺序进行访问和遍历。

QMultiMap 提供了一系列的方法来操作和管理键值对。你可以使用 insert() 方法向 QMultiMap 中插入键值对,如果键已经存在,那么该值将会被添加到已有的键值对列表中。你还可以使用 remove() 方法来删除指定键值对,或者使用 clear() 方法来清空整个 QMultiMap。

QMultiMap 还提供了一些方便的方法来访问和遍历键值对。你可以使用 values() 方法获取指定键对应的所有值的列表,或者使用 keys() 方法获取所有键的列表。此外,你还可以使用 find() 方法来查找指定键对应的值,或者使用 contains() 方法来检查 QMultiMap 是否包含指定的键。

总之,QMultiMap 是一个非常实用的容器类,适用于需要存储多个具有相同键的值的场景。它提供了丰富的方法来操作和管理键值对,方便快捷地进行访问和遍历。

QMultiMap 特点

QMultiMap 的特点如下:

  1. 多重映射:QMultiMap 允许存储多个具有相同键的值。这意味着你可以将多个值与同一个键相关联,而不仅限于一个值。

  2. 键的顺序:QMultiMap 会按照键的顺序来存储键值对。这意味着你可以按照键的顺序进行访问和遍历,而不会丢失原始的键值对顺序。

  3. 动态大小:QMultiMap 的大小是动态的,可以根据需要进行扩展或收缩。你可以根据实际情况插入或删除键值对,而不需要提前指定容器的大小。

  4. 方便的插入和删除:QMultiMap 提供了方便的方法来插入和删除键值对。你可以使用 insert() 方法来插入键值对,如果键已经存在,那么该值将会被添加到已有的键值对列表中。你还可以使用 remove() 方法来删除指定键值对。

  5. 快速查找:QMultiMap 提供了快速查找指定键对应的值的方法。你可以使用 find() 方法来查找指定键对应的值,它会返回一个指向该值的迭代器。这样可以方便地进行值的查找和操作。

  6. 丰富的方法:QMultiMap 提供了丰富的方法来操作和管理键值对。除了插入、删除和查找方法之外,它还提供了许多其他方法,如清空整个容器、获取所有键的列表、获取指定键对应的所有值的列表等。

总之,QMultiMap 是一个灵活、方便和高效的容器类,适用于需要存储多个具有相同键的值,并按照键的顺序进行访问和遍历的场景。它提供了丰富的方法来操作和管理键值对,方便快捷地进行插入、删除、查找和遍历操作。

代码示例

#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 创建一个 QMultiMap 对象
    QMultiMap multiMap;

    // 插入键值对
    multiMap.insert("Apple", 5);
    multiMap.insert("Banana", 3);
    multiMap.insert("Apple", 2);
    multiMap.insert("Orange", 4);

    // 输出原始的 QMultiMap
    qDebug() << "Original QMultiMap:";
    for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {
        qDebug() << it.key() << ":" << it.value();
    }

    // 修改键值对
    QString key = "Apple";
    int newValue = 10;
    auto range = multiMap.equal_range(key);
    for (auto it = range.first; it != range.second; ++it) {
        if (it.value() == 5) {
            it.value() = newValue;
        }
    }

    // 输出修改后的 QMultiMap
    qDebug() << "Modified QMultiMap:";
    for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {
        qDebug() << it.key() << ":" << it.value();
    }

    // 删除键值对
    key = "Banana";
    multiMap.remove(key);

    // 输出删除后的 QMultiMap
    qDebug() << "QMultiMap after removal:";
    for (auto it = multiMap.constBegin(); it != multiMap.constEnd(); ++it) {
        qDebug() << it.key() << ":" << it.value();
    }

    // 查找键值对
    key = "Orange";
    auto it = multiMap.find(key);
    if (it != multiMap.end()) {
        qDebug() << "Value for key" << key << ":" << it.value();
    } else {
        qDebug() << "Key" << key << "not found in QMultiMap";
    }

    return a.exec();
}


这个示例演示了如何使用 QMultiMap 进行增删改查操作。在这个示例中,我们创建了一个 QMultiMap 对象 multiMap,并使用 insert() 方法插入了几个键值对。然后,我们使用迭代器遍历 QMultiMap,并输出原始的 QMultiMap。

接下来,我们使用 equal_range() 方法找到键为 “Apple” 的所有键值对,并将值为 5 的修改为 10。然后,我们再次遍历 QMultiMap,并输出修改后的 QMultiMap。

然后,我们使用 remove() 方法删除键为 “Banana” 的键值对,并再次遍历 QMultiMap,并输出删除后的 QMultiMap。

最后,我们使用 find() 方法查找键为 “Orange” 的值,并输出查找结果。


博客签名2021

你可能感兴趣的:(Qt,QML,qt,QMultiMap,容器,键值,键值重复)