我是靠谱客的博主 重要酒窝,最近开发中收集的这篇文章主要介绍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<QString> 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<int> stack;
stack.push(10);
stack.push(20);
stack.push(30);
while(!stack.isEmpty())
cout<<stack.pop()<<endl;

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

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

程序会依次输出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<Key,T>提供一个字典(关联数组),一个键映射到一个值。QMap存储数据是按照键的顺序,使用QHash会更快。
    定义QMap<QString,int>类型变量和赋值的示例代码如下:
    QMap<QString,int>map;
    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.

最后

以上就是重要酒窝为你收集整理的Qt容器类的全部内容,希望文章能够帮你解决Qt容器类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部