Qt容器类

Qt容器类,第1张

Qt容器

容器类
Qt的容器类比标准模板库中的容器类更轻巧安全和易于使用。并且是线程安全的,Qt的容器类的格式为:QList ,T 是一个具体的类型,可以是int、float等简单类型,也可以是Qstring、QDate等类型,但不能是QObject或任何其子类。T必须是一个可以赋值的类型。
Qt的容器类分为:

  • 顺序容器
  • 关联容器
    顺序容器类:
  • QList
    最常用的容器类,以数组列表的方式实现,在其前和其后添加数据非常快,QList以下标索引的方式对数据进行访问。
    QList用于添加、插入、替换、移动、删除、数据项函数有:insert()、replace()、removeAt()、move()、swap()、append()、prepend()、removeFirst()、removeLast()等。
    例如:
QList list;
list<<"one"<<"two"<<"three";
QString str1=list[1];
Qstring str0=list.at(0);

QList的isEmpty()函数在数据项为空时返回true,size()函数返回数据项的个数。

  • QlinkedList
    是链式列表的容器类,数据项不是用连续的内存存储的,基于迭代器访问数据项,并且插入和删除数据项的 *** 作时间相同。
  • QVector
    提供动态数组的功能,以下标索引访问数据,与QList的函数接口几乎相同,但性能比后者更高,因为QVector的数据项是连续存储的。
  • QStack
    类似于堆栈的后入先出 *** 作的容器类,push()和pop()是主要的接口函数。
    例:
QStack stack;
stack.push(10);
stack.push(20);
stack.push(30);
while(!stack.isEmpty())
	cout< 

程序会依次输出:30,20,10

  • QQueue
    提供类似于队列先入先出 *** 作的容器类,enqueue()和dequeue()是主要的 *** 作函数。
    例:
QQueue queue;
queue.enqueue(10);
queue.enqueue(20);
queue.enqueue(30);
while(!queue.isEmpty())
	cout< 

程序会依次输出10、20、30
关联容器类:

  • Qmap
  • QMultimap
  • QHash
  • QMultiHash
  • QSet
    QMultiMap和QMultiHash支持一个键关联多个值,QHash和QMultiHash类使用散列函数进行查找,查找速度更快。
    QSet
    QSet是基于散列表的集合模板类,它存储数据的顺序是不定的,查找值得速度非常快,QSet内部就是用QHash实现的。
    定义QSet容器和输入数据的实列代码如下:
    QSet set;
    set<<“dog”<<“cat”<<“tiger”;
    测试一个值是否包含于这个集合,用contains()函数,示例如下:
    if(!set.contains(“cat”))

    QMap
    QMap提供一个字典(关联数组),一个键映射到一个值。QMap存储数据是按照键的顺序,使用QHash会更快。
    定义QMap类型变量和赋值的示例代码如下:
    QMapmap;
    map[“one”]=1;
    map[“two”]=2;
    map[“three”]=3;
    也可以使用insert()函数赋值,或者remove()移除一个键值对,示例如下:
    map.insert(“four”,4);
    map.remove(“two”);
    要查找一个值,使用运算符【】或者value()函数,示例如下:
    int num1=map[“one”];
    int num2=map.value(“two”);
    如果在映射表中没有找到指定的键,会返回一个缺省构造值,例如,如果值的类型是字符串,会返回一个空的字符串。
    在使用value()函数查找键值时,还可以指定一个缺省的返回值,示例如下:
timeout=map.value("TIMEOUT",30);

表示如果在map里找到键“TIMEOUT”,就返回关联的值,否则返回值为30.

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5619867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存