Qt 常见容器类用法(二)

目录

QList类

QLinkedList类


QList类

对于不同的数据类型,QList<T>采取不同的存储策略,存储策略如下:

  • 如果T是一个指针类型或指针大小的基本数据类型(该基本类型占有的字节数和指针类型占有的字节数相同),QList<T>将数值直接存储在它的数组当中。
  • 如果QList<T>存储对象的指针,则该指针指向实际存储的对象
#include <QCoreApplication>

#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QList<int> qlist; // 初始化一个空的QList<int>列表
    for(int i=0;i<10;i++)
        qlist.insert(qlist.end(),i+10);
    qDebug()<<qlist;

    // 通过QList<int>::
    QList<int>::iterator x;
    qDebug()<<endl;
    qDebug()<<"Resuil:";
    for(x=qlist.begin();x!=qlist.end();x++)
    {
        qDebug()<<(*x);
        *x=(*x)*10+6;
    }

    // 初始化一个QList<int>const iterator 只读迭代器
    qDebug()<<endl;
    qDebug()<<"Result:";
    QList<int>::const_iterator qciter;
    for(qciter=qlist.constBegin();qciter!=qlist.constEnd();qciter++)
        qDebug()<<*qciter;

    // 向qlist添加元素
    qlist.append(666);
    QList<int>::iterator itr1;
    qDebug()<<endl;
    qDebug()<<"Result:";
    for(itr1=qlist.begin();itr1!=qlist.end();itr1++)
        qDebug()<<*itr1;

    // 查询qlist当中元素
    qDebug()<<endl;
    qDebug()<<"Result:";
    qDebug()<<qlist.at(3);
    qDebug()<<qlist.contains(77);
    qDebug()<<qlist.contains(166);

    // 修改qlist列表里面的元素值
    qDebug()<<endl;
    qDebug()<<"Result:";
    qlist.replace(5,888);
    qDebug()<<qlist;

    // 删除元素
    qDebug()<<endl;
    qDebug()<<"Result:";
    qlist.removeAt(0);
    qlist.removeFirst();
    qlist.removeAt(6);
    qDebug()<<qlist;

    return a.exec();
}

结果如下:

QLinkedList<T>类

QLinkedList<T>是一个链式列表,它以非连续的内存块保存数据。QLinkedList不能使用下标,只能使用迭代器访问它的数据项。与QLink相比,当对一个很大的列表进行插入操作时,QLinkedList具有更高的效率。

#include <QCoreApplication>

#include <QDebug>
#include <QLinkedList>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QLinkedList<QString> qAllMonth;

    for(int i=1;i<=12;i++)
        qAllMonth<<QString("%1%2").arg("Month:").arg(i);

    // 读写迭代器
    qDebug()<<"Result:";
    QLinkedList<QString>::iterator itrw=qAllMonth.begin();
    for(;itrw!=qAllMonth.end();itrw++)
        qDebug()<<*itrw;

    // 只读迭代器
    qDebug()<<endl<<"Result:";
    QLinkedList<QString>::const_iterator itr=qAllMonth.constBegin();
    for(;itr!=qAllMonth.constEnd();itr++)
        qDebug()<<*itr;

    return a.exec();
}

结果如下:

QLinkedList类不能通过索引方式访问元素(链表),保存大规模数量数据信息,建议使用QLinkedList(插入元素和删除元素,速度快,效率高)。

相关推荐

  1. Qt-容器

    2024-02-08 02:38:01       57 阅读
  2. Qt容器QHash

    2024-02-08 02:38:01       60 阅读
  3. Qt容器

    2024-02-08 02:38:01       54 阅读
  4. Qt基础-容器详解

    2024-02-08 02:38:01       59 阅读
  5. qt5-入门-容器

    2024-02-08 02:38:01       40 阅读
  6. Qt 顺序容器与关联容器

    2024-02-08 02:38:01       30 阅读
  7. 【Go - 常见的5函数用法

    2024-02-08 02:38:01       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-08 02:38:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-08 02:38:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-08 02:38:01       87 阅读
  4. Python语言-面向对象

    2024-02-08 02:38:01       96 阅读

热门阅读

  1. LCP 30. 魔塔游戏 - 力扣(LeetCode)

    2024-02-08 02:38:01       47 阅读
  2. 数据结构——A/复杂度

    2024-02-08 02:38:01       48 阅读
  3. Go语言从基础到高级-目录

    2024-02-08 02:38:01       57 阅读
  4. 机器学习系列——(八)KNN分类算法

    2024-02-08 02:38:01       49 阅读
  5. Rust 初体验1

    2024-02-08 02:38:01       46 阅读
  6. Python爬虫某云音乐歌手及下载其免费音乐

    2024-02-08 02:38:01       49 阅读
  7. KMP 笔记

    2024-02-08 02:38:01       57 阅读
  8. 51单片机 发送信息到电脑 com3口

    2024-02-08 02:38:01       51 阅读
  9. 2.7作业

    2024-02-08 02:38:01       46 阅读
  10. Lua编译与运行

    2024-02-08 02:38:01       52 阅读