Qt容器类学习笔记

特征: 1,平台一致性,并且都具有隐含共享的优点。2,易于使用的迭代器类。

  • 连续容器类
QVector<T>
    类似数组的容器类。在尾部插入数据高效,在头部或中间插入数据低效。
QLinkedList<T>
    不支持快速的随机访问。支持常量时间的插入或删除。
QList<T>
    通常状况下最好调用的连续容器。支持随机访问,并且插入,删除操作相对高效。
   不适用: 极大列表或必须数据保存在相邻的内存空间

T可以是int,doule等基本类型,指针类型,具有默认构造函数,复制构造函数或赋值操作符的类似的类。 
   不能直接适用继承QObject的数据类型,但是可以用它的指正。QObject禁止copy。

隐含共享解释:  String a = "test";  String b = a;   内存有数据结构会保存一个引用计数的参数,多一个就+1,减少的时候就减去1。

遍历容器类的方法一般有: 类似Java的迭代器和类似c++的迭代器 2种。
注意:
使用类似java迭代器遍历容器的时候,调用next(),就会指针前进一步。


    QHash<QString, QString> hash;
    hash.insert("t", "test2");
    hash.insert("b", "test1");
    hash.insert("c", "test3");

    QHashIterator<QString, QString> hasIterator(hash);
    while(hasIterator.hasNext()) {
         hasIterator.next();
         qDebug() << "key: " << hasIterator.key() << " value: " << hasIterator.value();
    }


  • 关联容器类
QMap<K, T> 
   是一个使用升序键值对的关联容器类。(默认按照K的升序排序)
QHash<K, T>
   类似QMap<K, T>  但是对K有要求,K要能够提供operator==操作和toHash()函数。
Qt还提供基于QHash<K, T>的Qcace<K,T>和QSet<K>

  • 算法
qFind() :查找容器中特定的值。(实际使用线性搜索)
qBinayyFind(): 查找容器中特定的值,但它认为容器是升序排序的。(实际上使用的快速二分法搜索)
qFill():采用特定的值组装一个容器。
qCopy():将一个容器的值拷贝到另外一个容器。
qSort():升序排序一个容器。
qDeleteAll():对存放在容器中的每一个指针调用delete。

QString:支持16位的Unicode。
QByteArray:存储原始的二进制数据以及8位编码的文本字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值