在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`。
Qt常用容器汇总
最新推荐文章于 2025-04-08 15:54:06 发布