当前位置: 首页 > 网络知识

Qt 如何遍历序列容器(QVector|QMap|...)

时间:2026-01-29 09:27:08

  QT提供了两种风格的遍历器:Java 和 STL

一、Java风格遍历器
  Java 风格的遍历器是 Qt 首先推荐使用的形式。这种风格比起 STL 风格的遍历器更方便。方便的代价就是不如后者高效。Java 风格的遍历器指向的是两个元素之间的位置,而不是指向元素本身。因此,它们可能会指向集合第一个元素之前的位置,也可能指向集合的最后一个元素之后的位置。每一种容器都有两种 Java 风格的遍历器:一种提供只读访问,一种提供读写访问:

以QVector为例,只读遍历的demo代码如下:

1 QVector<QString> vct = ; 2 QVectorIterator<QString> itr(vct); 3 while (itr.hasNext()) 4

输出结果如下:

1 itr.next()= "A" 2 itr.next()= "B" 3 itr.next()= "C" 4 itr.next()= "D" 5 itr.next()= "E"

如果需要修改其中容器的值,代码如下:

1 QVector<QString> vct = ; 2 QMutableVectorIterator<QString> mitr(vct); 3 while (mitr.hasNext()) 4 9 }

QMap的遍历也是类似

1 QMap<int, QString> map; 2 map.insert(1, "Apple"); 3 map.insert(2, "Banana"); 4 map.insert(3, "Cherry"); 5 map.insert(4, "Grape"); 6 7 QMapIterator<int, QString> itr(map); 8 while (itr.hasNext())

二、STL风格遍历器

  STL 风格的遍历器能够兼容 Qt 和 STL 的通用算法,并且为速度进行了优化。Qt 也提供了两种 STL 风格的遍历器:一种是只读访问,一种是读写访问。推荐尽可能使用只读访问,因为它们要比读写访问的遍历器更快。

QList遍历

1 QList<QString> lst; 2 lst << "Apple" << "Banana" << "Cherry" << "Grape"; 3 QList<QString>::iterator itr = lst.begin(); 4 for (itr; itr != lst.end(); ++itr)

QMap遍历

1 QMap<int, QString> map = , 3 , 4 5 }; 6 QMap<int, QString>::const_iterator citr = maponstBegin(); 7 for (citr; citr != maponstEnd(); ++citr)

输出结果如下:

1 1 : "Apple" 2 2 : "Banana" 3 3 : "Cherry"



上一篇:Qt 等待提示框(QMovie)
下一篇:Qt getOpenFileName、getSaveFileName、getOpenFileNames
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素