Qt常用容器汇总

在Qt中,容器类提供了多种数据结构来存储和管理数据。以下是Qt中常用的容器类及其使用示例,涵盖了大部分常见的容器。

 1. `QVector`

`QVector`是一个动态数组,支持随机访问。

 cpp
#include <QVector>
#include <QString>
#include <QDebug>

void vectorExample() {
    QVector<QString> vec;
    vec.append("Hello");
    vec.append("World");
    vec.insert(1, "Qt");

    for (int i = 0; i < vec.size(); ++i) {
        qDebug() << vec[i];
    }
}
 

 2. `QList`

`QList`是一个双向链表,适合频繁插入和删除操作。

 cpp
#include <QList>
#include <QString>
#include <QDebug>

void listExample() {
    QList<QString> list;
    list << "Apple" << "Banana" << "Cherry";

    list.removeAt(1); // 移除"Banana"

    for (const QString &fruit : list) {
        qDebug() << fruit;
    }
}
 

 3. `QMap`

`QMap`是一个基于红黑树的有序字典,支持键值对存储。

 cpp
#include <QMap>
#include <QString>
#include <QDebug>

void mapExample() {
    QMap<QString, int> map;
    map["Alice"] = 30;
    map["Bob"] = 25;

    for (auto it = map.constBegin(); it != map.constEnd(); ++it) {
        qDebug() << it.key() << ":" << it.value();
    }
}
 

 4. `QHash`

`QHash`是一个基于哈希表的无序字典,适合快速查找。

 cpp
#include <QHash>
#include <QString>
#include <QDebug>

void hashExample() {
    QHash<QString, int> hash;
    hash["Alice"] = 30;
    hash["Bob"] = 25;

    qDebug() << "Bob's age:" << hash.value("Bob");
}
 

 5. `QSet`

`QSet`是一个无序集合,存储唯一值。

 cpp
#include <QSet>
#include <QString>
#include <QDebug>

void setExample() {
    QSet<QString> set;
    set.insert("Red");
    set.insert("Green");
    set.insert("Blue");
    set.insert("Red"); // 重复插入不会影响

    for (const QString &color : set) {
        qDebug() << color;
    }
}
 

 6. `QStack`

`QStack`是一个后进先出(LIFO)的数据结构。

 cpp
#include <QStack>
#include <QString>
#include <QDebug>

void stackExample() {
    QStack<QString> stack;
    stack.push("First");
    stack.push("Second");
    stack.push("Third");

    while (!stack.isEmpty()) {
        qDebug() << stack.pop();
    }
}
 

 7. `QQueue`

`QQueue`是一个先进先出(FIFO)的数据结构。

 cpp
#include <QQueue>
#include <QString>
#include <QDebug>

void queueExample() {
    QQueue<QString> queue;
    queue.enqueue("First");
    queue.enqueue("Second");
    queue.enqueue("Third");

    while (!queue.isEmpty()) {
        qDebug() << queue.dequeue();
    }
}
 

 8. `QLinkedList`

`QLinkedList`是一个双向链表,适合频繁插入和删除操作。

 cpp
#include <QLinkedList>
#include <QString>
#include <QDebug>

void linkedListExample() {
    QLinkedList<QString> linkedList;
    linkedList.append("Node1");
    linkedList.append("Node2");
    linkedList.append("Node3");

    for (const QString &node : linkedList) {
        qDebug() << node;
    }
}
 

 9. `QVector`的其他用法

 cpp
#include <QVector>
#include <QDebug>

void vectorOperationsExample() {
    QVector<int> numbers;
    for (int i = 0; i < 10; ++i) {
        numbers.append(i);
    }

    // 计算总和
    int sum = 0;
    for (int num : numbers) {
        sum += num;
    }
    qDebug() << "Sum:" << sum;
}
 

 10. `QList`的其他用法

 cpp
#include <QList>
#include <QDebug>

void listOperationsExample() {
    QList<int> numbers;
    for (int i = 0; i < 10; ++i) {
        numbers.append(i * 2);
    }

    // 计算平均值
    double average = 0;
    for (int num : numbers) {
        average += num;
    }
    average /= numbers.size();
    qDebug() << "Average:" << average;
}
 

 总结

以上示例涵盖了Qt中常用的容器类,包括`QVector`、`QList`、`QMap`、`QHash`、`QSet`、`QStack`、`QQueue`和`QLinkedList`。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值