目录

官方解析

博主栗子


官方解析

QSet类是一个模板类,他是一个哈希表集合。
QSet<T>是Qt的一个普通容器类。QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能。他和QHash很像
PS:Set就是键值一样的Hash

这里举一个QSet中存储QString的栗子:

QSet<QString> set;

使用insert()函数往set里面添加值:

  set.insert("one");set.insert("three");set.insert("seven");

或者通过<<这个重载运算符放set插入数据:

set << "twelve" << "fifteen" << "nineteen";

使用contains()判断set中是否存在某一项:

  if (!set.contains("ninety-nine"))...

如果想遍历整个set,可以使用iterator。QSet提供了2种方式去遍历,一种是java风格的iterators(使用QSetIterator和QMutableSetIterator)或者使用STL风格的iterators(QSet::iterator和QSet::const_iterator)。下面举了一个使用java风格的iterator去变量QSet<QWidget*>:

  QSetIterator<QWidget *> i(set);while (i.hasNext())qDebug() << i.next();

对于同样的代码,可以使用STL风格的iterator;

  QSet<QWidget *>::const_iterator i = set.constBegin();while (i != set.constEnd()) {qDebug() << *i;++i;}

QSet是无序的,所以iterator的指向也是未知的,如果需要有序的键值,那么得使用QMap。
遍历QSet,还可以使用foreach:

  QSet<QString> set;...foreach (const QString &value, set)qDebug() << value;

使用remove()函数可以删除某个item。使用clear()移除所有的item。
QSet的数据必须是一个可转化的数据类型(assignable data type),举个例子,不能存QWidget而要存QWidget*。除此之外,这些类型要提供 == 的重载,并且还得有一个全局的qHash()函数,这个全局的qHash()函数为键值的类型返回一个hash值。通过QHash的文档将会列出上面所说到的东西。
QSet使用hash表进行检索。因为hash表增加和收缩,不浪费内存的特性,使得QSet能快速检索,如果你大概知道这个hash表的大小,可以使用reserve()函数可以通知QSet中hash表的大小,但是这不是获取良好性能的必要条件,通过调用capacity()去查看hash表的大小。

博主栗子

举一个插入和遍历,看大小的例子把

源码如下:

#include <QtCore/QCoreApplication>
#include <QSet>
#include <QDebug>class Data{public:Data(const QString &strVal, const int &intVal){StrVal = strVal;IntVal = intVal;}QString StrVal;int IntVal;friend QDebug operator << (QDebug os, Data data){os << "(" << data.StrVal << " ,"<< data.IntVal << ")";return os;}
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QSet<Data*> dataSet;dataSet.insert(new Data("ABC", 0));dataSet.insert(new Data("DEF", 1));dataSet << new Data("AAA", 2);dataSet << new Data("CCC", 3);//Java styleQSetIterator<Data *> i(dataSet);while(i.hasNext())qDebug() << *(i.next());//STL styleQSet<Data*>::const_iterator stlI = dataSet.constBegin();while(stlI != dataSet.constEnd()){qDebug() << **stlI;delete *stlI;stlI++;}return a.exec();
}

运行截图如下:

当在此处下断点时,运行截图如下:

当在此处下断点时,运行截图如下:

Qt文档阅读笔记-QSet官方解析及实例相关推荐

  1. Qt文档阅读笔记-QtWebApp官方解析与实例(使用QtWebApp搭建HTTP服务器)

    目录 官方解析 博主例子 官方解析 QtWepApp是一个C++的http服务器,受到了java Servlets的启发,因为是Qt写的,所以有跨平台的支持. QtWebApp包含如下的组成部分:   ...

  2. Qt文档阅读笔记-QHostInfo官方解析与实例(根据Host获取IP)

    官方解析 QHostInfo提供了一个静态方法获取主机名: QHostInfo中有一个查找机制,可以根据IP找主机名,也可能工具主机名找IP,可以通过调用QHostInfo::lookupHost这个 ...

  3. Qt文档阅读笔记-QTcpServer官方解析与实例(使用QSocket创建简单的HTTP服务器)

    目录 官方解析 博主例子(做一个简单的HTTP服务器) 本例子中HTTP协议关键点 官方解析 QTcpServer类,提供TCP服务的基础: 这个类接受TCP连接,可以指定一个端口,也可以让其自动一个 ...

  4. Qt文档阅读笔记-QWebPage官方解析与实例

    目录 官方解析 博主例子 源码下载地址 官方解析 QWebPage提供一个视图对象和一个web页面: QWebPage提供了web页面的内容,各种设置(是否支持JavaScript等)和连接,它与QW ...

  5. Qt文档阅读笔记-QWebView官方解析与实例

    目录 背景 官方解析 博主例子 背景 最近发现某Qt项目,出现的效果杠杆的,在看某一小功能的时候,发现有个echart的东西,百度了发现,真的是一个新大陆,Qt加web编程,贼吉尔可怕. 在此发现使用 ...

  6. Qt文档阅读笔记-Q_CLASSINFO官方解析与实例

    官方解析 Q_CLASSINFO 这个宏为类提供额外的信息,要想获取这个Q_CLASSINFO这个信息要使用QObject::metaObject().Qt在Active Qt,Qt D-BUS以及Q ...

  7. Qt文档阅读笔记-stackUnder官方解析与实例

    目录 官方解析 博主例子 官方解析 这里可以配合raise()和lower()这两个函数来使用! 博主例子 用2个label,点击谁谁就浮在界面的最上面,很简单的代码,程序运行截图如下: 源码如下: ...

  8. Qt文档阅读笔记-QPropertyAnimation官方解析及实例

    目录 官方解析 博主例子 官方解析 QPropertyAnimation QPropertyAnimation类为Qt属性提供动画. QPropertyAnimation类可以修改Qt属性,从而达到动 ...

  9. Qt文档阅读笔记-QNetworkAccessManager官方解析与实例

    目录 官方解析 博主例子 官方解析 QNetworkAccessMangager类运行应用程序回复和接收网络包. QNetworkAccessManager是一套API库,可以发包,设置代理,内存配置 ...

最新文章

  1. pandas的DataFrame转化为Datatable的DataFrame
  2. ImportError: No module named 'commands'
  3. 如何在Smartphone模拟器上测试短信和电话
  4. 第二次作业+105032014037
  5. MySQL开启命令自动补全功能(auto-rehash)
  6. nokia n9 android 4.4,再现新神机 诺基亚N9运行Android4.1系统
  7. 计算机毕业论文画图软件,计算机科学与技术专业毕业论文(绘图软件的设计).doc...
  8. es文件搜索不到win7服务器,ES文件浏览器Win7局域网共享错误解决方案
  9. 提高软件开发工作效率的几种方法
  10. 基于java的密码字典生成
  11. 数字图像处理基础知-色度空间(RGB\CMY\CMYK\HSI的详细解释和一些关联性描述)
  12. 基于Pytorch中的Dataset和Dataloader读取Voc类目标检测数据集
  13. 工欲善其事之Redis可视化管理工具
  14. 如何用css实现彩带样式,CSS3 彩色丝带
  15. 王者服务器维护杨戬,王者荣耀杨戬-王者荣耀官网网站-腾讯游戏
  16. c语言井字棋程序设计报告,井字棋游戏(课程设计)总结报告.doc
  17. mac Node 安装及部署
  18. 幅相曲线渐近线_若最小相位系统的低频段幅频特性的渐近线是一条斜率为20dB/dec的直线,则该系统( )。_学小易找答案...
  19. word插入图片,嵌入型,无效果
  20. 经典算法--韩信点兵

热门文章

  1. 中国民企老板要牢记的四句话
  2. C/C++编程知识分享:C++ 手把手教你实现可变长的数组
  3. 一文搞懂IT基础知识,讲通HTTP、TCP、IP、以太网
  4. 浅谈:飞鸽传书 的TCP/IP原理
  5. 已经没有再谈话再培养的飞秋必要了
  6. Java文件操作增强工具
  7. FreeEIM 2.0 beta 发布
  8. 一个DirectSound的例子
  9. eclipse中的java包awt_Eclipse中打包java程序
  10. 用渐变色画圆_详细步骤!用ps画个中秋圆月亮