QT 容器

 

 

简介
QList 这是目前最常用的容器类。他存储了给定类型的值的一个列表,而这些值可以通过索引访问。在内部,QList使用数组来实现,以确保进行快速的基于索引的访问。可以使用QList::append()和QList::preappend()在列表的两端添加项目,也可以使用QList::insert()在列表的中间插入项目。常用的QStringList继承自QList.
QLinkedList 除了使用迭代器而不使用整数索引进行项目访问外,他基本与QList相当。当向一个很大的列表的中间插入项目时,QLinkedList比QList拥有更好的性能,而且它拥有更好的迭代器语义。(当迭代器指向一个QLinkedList的一个项目后,只要这个项目还存在,那么迭代器就依然有效;而当迭代器指向QList中的一个项目后,如果QList进行了插入或者删除操作,那么这个迭代器就无效了)
QVector 它在内存的相邻位置存储给定类型的值的一个数组。在vector的前面或者中间插入项目是非常缓慢的,因为这样可能导致大量的项目在内存中移动一个位置。
QStack 它是QVector的一个便捷子类,提供了后进先出LIFO语义。它添加了push()、pop()和top()等函数
QQueue 它是QList的一个便捷子类,提供了先进先出FIFO语义。他添加了enqueue()、dequeue()和head()等函数
QSet 它提供了可以快速查询单值的数学集
QMap 它提供了一个字典(关联数组),将key类型的键值映射到T类型的值上。一般一个键关联一个单一的值。QMap使用键顺序来存储它的数据;如果不关心存储顺序,那么可以使用QHash来代替它,因为QHash速度更快。
QMultiMap 他是QMap的一个便捷类,提供了多值映射的接口函数,例如一个键可以关联多个值
QHash 它与QMap拥有基本相同的接口,但是它的查找速度更快。QHash的数据是以任意的顺序存储的
QMultiHash 它是QHash的一个便捷类,提供了实现多值散列的接口函数

 

QList示例

#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QList list;
    list<<"aa"<<"bb"<<"cc";     //插入项目
    if(list[1] == "bb")
        list[1] = "ab";
    list.replace(2,"bc");       //将"cc"换为"bc"
    qDebug()<<"the list is:";   //输出整个列表
    for(int i = 0;i

QMap示例:

#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QMap map;
    map["one"] = 1;             //向map中插入("one",1)
    map["three"] = 3;
    map.insert("seven",7);      //使用insert函数进行插入
    //获取键的值,使用"[]"操作符时,如果map中没有该键,那么会自动插入
    int value1 = map["six"];
    qDebug()<<"value1:"< values = map.values("two");
    qDebug()<<"two:"< map1,map2,map3;
    map1.insert("values",1);
    map1.insert("values",2);
    map2.insert("values",3);
    //可以进行相加,这样map3的values键将包含2,1,3三个值
    map3 = map1 + map2;
    QList myValues = map3.values("values");
    qDebug()<<"the values are:";
    for(int i = 0; i < myValues.size();i++)
    {
        qDebug()<

 

 

 

你可能感兴趣的:(Qt)