QT5入门之24 -QT 容器

和标准STL一样,QT也有很多容器。

Qt 提供了顺序存储容器:QList,QLinkedList,QVector,QStack 和 QQueue。对于绝大多数应用程序,QList 是最好的选择。虽然它是基于数组实现的列表,但它提供了快速的向前添加和向后追加的操作。如果你需要链表,可以使用 QLinkedList。如果你希望所有元素占用连续地址空间,可以选择 QVector。QStack 和 QQueue 则是 LIFO 和 FIFO 的。

Qt 还提供了关联容器:QMap,QMultiMap,QHash,QMultiHash 和 QSet。带有“Multi”字样的容器支持在一个键上面关联多个值。“Hash”容器提供了基于散列函数的更快的查找,而非 Hash 容器则是基于二分搜索的有序集合。

QList:这是至今为止提供的最通用的容器类。它将给定的类型 T 的对象以列表的形式进行存储,与一个整型的索引关联。QList 在内部使用数组实现,同时提供基于索引的快速访问。我们可以使用 QList::append() 和 QList::prepend() 在列表尾部或头部添加元素,也可以使用 QList::insert() 在中间插入。相比其它容器类,QList 专门为这种修改操作作了优化。QStringList 继承自 QList。

QVector:用于在内存的连续区存储一系列给定类型的值。在头部或中间插入数据可能会非常慢,因为这会引起大量数据在内存中的移动。

容器的遍历:

QList list;
list << "A" << "B" << "C" << "D";

QList::iterator i;
for (i = list.begin(); i != list.end(); ++i) {
    *i = (*i).toLower();
}

QLinkedList list;
...
QString str;
foreach (str, list) {
    qDebug() << str;
}

QList较为常用。
QT5入门之24 -QT 容器_第1张图片

你可能感兴趣的:(QT)