Qt容器 STL类型迭代器的使用

1.简介

STL风格迭代器兼容Qt和STL的通用算法,而且再速度上进行了优化。每一个容器都有两个STL风格迭代器类型:一个提供了只读访问,另一个提供了读/写访问。
在这里插入图片描述

2.使用示例

#include <QCoreApplication>
#include <QList>
#include <QDebug>
#include <QMap>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    
    QList<QString> list;
    list << "A" << "B" << "C" << "D";
    QList<QString>::iterator i;      // 使用读写迭代器
    
    qDebug() << "the forward is :";
    for (i = list.begin(); i != list.end(); ++i) {
        *i = (*i).toLower();         // 使用QString的toLower()函数转换为小写
        qDebug() << *i;              // 结果为a,b,c,d
    }
    
    qDebug() << "the backward is :";
    while (i != list.begin()) {
        --i;
        qDebug() << *i;               // 结果为d,c,b,a
    }
    
    QList<QString>::const_iterator j; // 使用只读迭代器
    qDebug() << "the forward is :";
    for (j = list.constBegin(); j != list.constEnd(); ++j)
        qDebug() << *j;               // 结果为a,b,c,d

    QMap<QString, int> map;
    map.insert("one",1);
    map.insert("two",2);
    map.insert("three",3);
    
    QMap<QString, int>::const_iterator p;
    qDebug() << "the forward is :";
    for (p = map.constBegin(); p != map.constEnd(); ++p)
        qDebug() << p.key() << ":" << p.value();// 结果为(one,1),(three,3),(two,2)

    return a.exec();
}

执行效果:
在这里插入图片描述

3.详细说明

STL风格迭代器的API模仿了数组的指针,

  • 使用“++”操作来向后移动迭代器使其指向下一个项目
  • 使用“*”操作符返回迭代器指向的项目

注意:
不同于Java风格迭代器,STL风格迭代器是直接指向项目的。

begin()函数返回了一个指向该容器中第一个项目的迭代器,end()函数也返回一个迭代器,但是这个迭代器指向该容器最后一个项目的下一个假想的虚项目。
在这里插入图片描述

4.STL风格迭代器常用API

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级D洋葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值