我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Qt容器类怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Qt容器类怎么使用

本篇内容主要讲解“Qt容器类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Qt容器类怎么使用”吧!

    一. QList类,QLinkedList类 和 QVector类

    QList类、QLinkedList类和QVector类常常使用到的Qt容器类有QList、QLinkedList和QVector等。在开发一个较高性能需求的应用程序时。程序猿会比較关注这些容器类的执行效率。下表列出了QList、QLinkedList和QVector容器的时间复杂度。

    当中: “Amort.O(1)”表示仅完毕一次操作.可能会有O(n)行为.

    (1)QList类

    QList<T>是眼下为止最经常使用的容器类。它存储给定数据类型T的一列数值。继承自QList类的子类QItemSelection、QQueue、QSignalSpy以及QStringList和QTestEventList。 QList提供了能够在列表进行追加的QList::append()和Qlist::prepend()函数。也提供了在列表中间完毕插入操作的函数QList::insert()。相对于不论什么其它的Qt容器类。为了使可运行代码尽可能少。QList被高度优化。 QList<T>维护了一个指针数组,该数组存储的指针指向QList<T>存储的列表项的内容。

    #include <QDebug>#include <QList>  int main(){    QList<QString> list;    {        QString str("This is a test string");        list<<str;    }    qDebug()<<list[0]<<"  good evening";      return 0;}

    QList<QString> list: 声明一个QList<QString>栈对象.

    list<<str; 通过操作运算符”<<“将QString 字符串存储在列表中.

    (2) QLinkedList 类

    QLinkedList<T>是一个链式列表,它以非连续的内存块保存数据。

    QLinkedList<T>不可以使用下标。仅仅可以使用迭代器訪问它的数据项。与QList相比,当对一个非常大的列表进行插入操作时。QLinkedList具有更高的效率。

    (3) QVector 类

    QVector<T>在相邻的内存中存储给定数据类型T的一组数值。

    在一个QVector的前部或者中间位置进行插入操作的速度是非常慢的,这是由QVector存储数据的方式决定的。

    STL风格迭代容器类遍历容器

    对于每个容器类,Qt都提供了两种类型的STL风格迭代器数据类型:一种提供仅仅读訪问,一种提供读写訪问。因为仅仅读类型的迭代器要比读写迭代器速度更快,所以应尽可能地使用仅仅读类型的迭代器。两种风格迭代器分类如表表示。

    <pre name="code" class="cpp">int main(){    QList<int> list;    for(int j=0;j<10;j++)        list.insert(list.end(),j);    QList<int>::iterator i;// 初始化一个读写迭代器,次为指针类型    for(i=list.begin();i!=list.end();++i)   {       qDebug()<<(*i);       *i = (*i)*10;   }    QList<int>::const_iterator ci;// 初始化一个仅仅读迭代器   for(ci = list.constBegin();ci != list.constEnd();++ci)       qDebug()<<*ci;     return 0;}

    二. QMap类和QHash类

    QMap类和QHash类具有很类似的功能。它们的区别仅在于: QHash具有比QMap更快的查找速度。 QHash以随意的顺序存储数据项。而QMap总是依照键Key顺序存储数据。

    QHash的键类型Key必须提供operator==()和一个全局的qHash(Key)函数,而QMap的键类型Key必须提供operator<()函数。

    1 . QMap类

    QMap<Key,T>提供了一个从类型为Key的键到类型为T的值的映射。 QMap存储的数据形式是一个键相应一个值,而且依照键Key的次序存储数据。为了可以支持一键多值的情况,QMap提供了QMap<Key,T>::insertMulti()和QMap<Key,T>::values()函数。存储一键多值的数据时,也可以使用QMultiMap<Key,T>容器,它继承自QMap。

    2.QHash类

    QHash<Key,T>具有和QMap差点儿全然同样的API。

    QHash维护着一张哈希表(hash table)。哈希表的大 小和QHash的数据项的数目相适应。

    3. STL风格的迭代器容器遍历

    对于每个容器类。Qt都提供了两种类型的STL风格迭代器数据类型:一种提供仅仅读訪问。一种提供读写訪问.

    int main(){    QMap<QString,QString> map;    map.insert("bj","1111");    map.insert("qhd","222");    map.insert("tj","3333");     QMap<QString,QString>::Iterator mi;// 读写迭代器    mi = map.find("bj");    if(mi != map.end())        mi.value() = "010";     QMap<QString,QString>::const_iterator modi;// 仅仅读迭代器    qDebug()<<"  ";    for(modi=map.constBegin();modi != map.constEnd(); ++modi)        qDebug()<<" "<<modi.key()<<" "<<modi.value();     return 0;}

    三. QVariant类

    QVariant类类似于C++的联合(union)数据类型。它可以保存非常多Qt类型的值。包含QColor、QBrush、QFont、QPen、QRect、QString、QSize等。也可以存放Qt的容器类型的值。

    Qt的非常多功能都是建立在QVariant基础上的,比方Qt的对象属性以及数据库功能等。

    #include <QDebug>#include <QVariant>#include <QColor> int main(){    QVariant v(709);// 声明一个QVariant变量v,初始化为整数.    qDebug()<<v.toInt();  /// 转换为整数,输出     //v.QVariant("How are you!");  // 这样的写法编译不通过.    v = QVariant("How are you!");// 改变v的值为字符串    qDebug()<<v.toString();     QMap<QString,QVariant> map; //声明QMap变量map    map["int"] = 709;    map["double"] = 709.709;    map["string"] = "How are you!";    map["color"] = QColor(255,0,0);     qDebug()<<map["int"]<<map["int"].toInt();    qDebug()<<map["double"]<<map["double"].toDouble();    qDebug()<<map["string"]<<map["string"].toString();    qDebug()<<map["color"]<<map["color"].value<QColor>();     QStringList s1;               // 创建字符串列表    s1<<"A"<<"B"<<"c"<<"D";    QVariant slv(s1);             // 将列表保存在QVariant变量中    if(slv.type() == QVariant::StringList )    {        QStringList list=slv.toStringList();        for(int i=0;i<list.size();++i)            qDebug()<<list.at(i);    }      return 0;}

    四. Qt的算法

    Qt的<QtAlgorithms>和<QtGlobal>模块提供了一些算法和函数。

    int main(){    double a = -19.3,b=9.7;    double c=qAbs(a);   // 返回绝对值    double max=qMax(b,c);  // 返回最大值     int bn = qRound(b);  //  四舍五入返回一个整数    int cn = qRound(c);  //      qDebug()<<"a="<<a;    qDebug()<<"b="<<b;    qDebug()<<"c=qAbs(a)="<<c;    qDebug()<<"qMax(b,c)="<<max;    qDebug()<<"bn=qRound(b)="<<bn;    qDebug()<<"cn=qRound(c)="<<cn;     qSwap(bn,cn);   // 交换两个数的值    qDebug()<<"qSwap(bn,cn):"<<"bn="<<bn<<"cn="<<cn;      return 0;}

    输出:

    a= -19.3
    b= 9.7
    c=qAbs(a)= 19.3
    qMax(b,c)= 19.3
    bn=qRound(b)= 10
    cn=qRound(c)= 19
    qSwap(bn,cn): bn= 19 cn= 10

    基本正則表達式

    正則表達式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成。

    (1) 最简单的表达式是一个字符。要表示字符集的表达式能够使用类似如“[AEIOU]”表示匹配全部的大写元音字母;使用“[^AEIOU]”则表示匹配全部非元音字母,即辅音字母;连续的字符集使用能够使用表达式如“[a-z]”,表示匹配全部小写英文字母。

    (2) 量词说明表达式出现的次数,比如“x[1,2]”表示“x”能够至少有一个。至多两个。 在计算机语言中。标识符通常要求以字母或下画线开头,后面能够是字母、数字和下画线。满足条件的标识符表示为: ” [A-Za-z_]+[A-Za-z_0-9]* “

    ⑶“^”、“$”、“\b”都是正則表達式的断言

    到此,相信大家对“Qt容器类怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Qt容器类怎么使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Qt容器类怎么使用

    本篇内容主要讲解“Qt容器类怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Qt容器类怎么使用”吧!一. QList类,QLinkedList类 和 QVector类QList类、QLin
    2023-07-04

    Qt常用容器类如何使用

    这篇文章主要介绍“Qt常用容器类如何使用”,在日常操作中,相信很多人在Qt常用容器类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Qt常用容器类如何使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧
    2023-07-02

    Qt学习之容器类的使用教程详解

    Qt提供了多个基于模板的容器类,这些类可以用于存储指定类型的数据项。本文主要介绍了Qt常用容器类的使用,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-12-08

    Qt学习之容器如何使用

    今天小编给大家分享一下Qt学习之容器如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Qt容器Qt容器主要优点就是在所有
    2023-07-05

    Qt QFrame怎么使用

    这篇文章主要介绍了Qt QFrame怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt QFrame怎么使用文章都会有所收获,下面我们一起来看看吧。1.概述void setFrameShape(Shap
    2023-07-02

    Qt图片绘图类之QPixmap/QImage/QPicture怎么使用

    这篇文章主要介绍了Qt图片绘图类之QPixmap/QImage/QPicture怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Qt图片绘图类之QPixmap/QImage/QPicture怎么使用文章都
    2023-07-05

    C++ Qt QColorDialog怎么使用

    这篇文章主要介绍“C++ Qt QColorDialog怎么使用”,在日常操作中,相信很多人在C++ Qt QColorDialog怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++ Qt QCol
    2023-06-26

    qt中radiobutton怎么使用

    在qt中使用radiobutton,可以按照以下步骤进行操作:1. 首先,在Qt设计器中将一个QRadioButton控件拖放到窗口中。2. 在属性编辑器中为QRadioButton设置文本,以便用户能够看到选项的描述。3. 为QRadio
    2023-09-16

    QT线程池的使用(QThreadPool类和QRunnable类)

    本文主要介绍了QT线程池的使用(QThreadPool类和QRunnable类),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-17

    Qt数据库(5) - 使用SQL Model类

    Qt Version 5.14.0除了QSqlQuery,Qt还提供了三个高级类用来访问数据库,分别为QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel。QSqlQueryModel基于任意SQL语句的
    Qt数据库(5) - 使用SQL Model类
    2020-08-08

    C++STL容器中string类怎么用

    这篇文章将为大家详细讲解有关C++STL容器中string类怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言为什么学习string类:在C语言中,字符串是以\0结尾的集合,为了操作方便,在C标准库
    2023-06-29

    怎么使用qt制作音乐播放器

    要使用Qt制作音乐播放器,您可以按照以下步骤进行:1. 首先,确保已经安装了Qt开发环境。您可以从Qt官方网站上下载并安装Qt,确保选择与您的操作系统兼容的版本。2. 创建一个新的Qt项目。在Qt Creator中,选择“新建项目”并选择“
    2023-08-09

    QT中的部件怎么使用

    这篇文章主要介绍“QT中的部件怎么使用”,在日常操作中,相信很多人在QT中的部件怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”QT中的部件怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!【1
    2023-07-02

    怎么使用Qt制作简单的计算器

    这篇文章主要讲解了“怎么使用Qt制作简单的计算器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Qt制作简单的计算器”吧!前言这里先跟大家说说使用到的函数:1、槽连接函数connect
    2023-07-04

    Qt中setsocketoption函数怎么使用

    在Qt中,可以使用`QAbstractSocket::setSocketOption()`函数来设置套接字选项。该函数有两个参数,第一个参数是一个`QAbstractSocket::SocketOption`枚举值,用于指定要设置的选项类型
    2023-10-10

    Spring容器BeanFactory怎么使用

    本篇内容主要讲解“Spring容器BeanFactory怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring容器BeanFactory怎么使用”吧!Spring容器什么是Sprin
    2023-06-03

    C++怎么使用string容器

    本篇内容主要讲解“C++怎么使用string容器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++怎么使用string容器”吧!string基本概念本质:string是c++风格的字符串,而s
    2023-07-02

    qt中怎么使用sqlite数据库

    在Qt中使用SQLite数据库,首先需要在项目中包含Qt的SQL模块,然后在代码中进行数据库的连接、查询等操作。以下是使用SQLite数据库的简单示例:在.pro文件中添加QT += sql,包含Qt的SQL模块在代码中连接数据库,创建表
    qt中怎么使用sqlite数据库
    2024-04-09

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录