Qt 中QList、QListIterator 、QMutableListIterator、QMap用法

cpp 复制代码
#include <QCoreApplication>
#include <QDebug>

//QListIterator
void printList()
{
    QList<int> list;
    list<<1<<2<<3<<4<<5;
    QListIterator<int> i(list);
    qDebug()<<"正序打印....";
    //正序打印
    for(;i.hasNext();)
        qDebug()<<i.next();
    //倒序打印
    qDebug()<<"倒序打印....";
    i.toBack();

    for(;i.hasPrevious();)
        qDebug()<<i.previous();
}

void mutableList(){
    QList<int> list;
    qDebug()<<"插入列表数据0-9:";
    QMutableListIterator<int> i(list);//创建迭代器
    for(int j=0;j<10;j++)
        i.insert(j);
    for(i.toFront();i.hasNext();)
        qDebug()<<i.next();
    qDebug()<<"偶数删除,奇数乘以10:";
    //偶数删除,奇数乘以10:
    for(i.toBack();i.hasPrevious();)
    {
        if(i.previous()%2==0){
            i.remove();
        }else{
            i.setValue(i.peekNext()*10);
        }
    }
    for(i.toFront();i.hasNext();)
        qDebug()<<i.next();
}
void QListInsert()
{
    QList<int> list;
    for(int j=0;j<9;j++)
        list.insert(list.end(),j);
    qDebug("QList<int>::iterator");
    QList<int>::iterator i;
    for(i=list.begin();i!=list.end();++i){
        qDebug()<<(*i);
        *i =(*i)*10;
    }
    qDebug("QList<int>::const_iterator");
    QList<int>::const_iterator ci;
    for(ci=list.constBegin();ci!=list.constEnd();++ci)
    {
        qDebug()<<(*ci);
    }

}

 void QMapEdit()
 {
     QMap<QString,QString> map;
     map.insert("北京","111");
     map.insert("上海","021");
     map.insert("南京","025");
     QMapIterator<QString,QString> i(map);
     for(;i.hasNext();)
     {
         i.next();
         qDebug()<<i.key()<<"|"<<i.value();
     }
     qDebug("修改 key 111  to  010");
     QMutableMapIterator<QString,QString> mi(map);
     if(mi.findNext("111"))
         mi.setValue("010");
     QMapIterator<QString,QString> modi(map);
     for(;modi.hasNext();)
     {
         modi.next();
         qDebug()<<modi.key()<<"|"<<modi.value();
     }
 }


 /*在 QMap 中的插入、遍历和修改。
  * 通过查找键来实现值的修改。
*/
 void QMapEditPrint()
 {
     QMap<QString,QString> map;
     map. insert ("beijing","111");
     map.insert("shanghai","021");
     map.insert("nanjing","025");
     QMap<QString,QString>::const_iterator i;
     for(i=map.constBegin();i!=map.constEnd();++i)
     {
         qDebug()<<i.key()<<"|"<<i.value();
     }

     qDebug()<<"修改 111→ 1000";
     QMap<QString,QString>::Iterator mi;
     mi =map.find("beijing");
     if(mi!= map.end())
         mi.value()= "010";

     QMap<QString,QString>::const_iterator modi;
     for(modi=map.constBegin();modi!=map.constEnd();++modi)
     {
         qDebug()<<modi.key()<<"|"<<modi.value();
     }

 }
//绝对值、最大值、四舍五入
 void absMax(){
     double a = -19.3,b= 9.7;
     double c =qAbs(a);
     double max = qMax(b,c);
     int bn =qRound(b);
     int cn =qRound(c);
     qDebug()<<"a="<<a;
     qDebug()<<"b="<<b;
     qDebug()<<"c =qAbs(a)="<<c;
     qDebug()<<"qMax(b,c)="<<max;
     qDebug()<<"qRound(b)="<<bn;
     qDebug()<<"qRound(c)="<<cn;
 }


int main(int argc, char *argv[])
{
    QCoreApplication a0(argc, argv);
    printList();
    mutableList();
    QListInsert();
    QMapEdit();
    QMapEditPrint();
    absMax();


    return a0.exec();
}

运行结果

bash 复制代码
正序打印....
1
2
3
4
5
倒序打印....
5
4
3
2
1
插入列表数据0-9:
0
1
2
3
4
5
6
7
8
9
偶数删除,奇数乘以10:
10
30
50
70
90
QList<int>::iterator
0
1
2
3
4
5
6
7
8
QList<int>::const_iterator
0
10
20
30
40
50
60
70
80
"上海" | "021"
"北京" | "111"
"南京" | "025"
修改 key 111  to  010
"上海" | "021"
"北京" | "010"
"南京" | "025"
"beijing" | "111"
"nanjing" | "025"
"shanghai" | "021"
修改 111→ 1000
"beijing" | "010"
"nanjing" | "025"
"shanghai" | "021"
a= -19.3
b= 9.7
c =qAbs(a)= 19.3
qMax(b,c)= 19.3
qRound(b)= 10
qRound(c)= 19
end!
相关推荐
luj_17684 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
会周易的程序员4 小时前
aiDgePLC iec61131 虚拟机 完整使用文档
c++·物联网·架构·st·iec61131
小小龙学IT5 小时前
Boost.Beast 深度实战:基于 Asio 的开源 C++ HTTP/WebSocket 协议库
c++·websocket·http
不可求~6 小时前
C++ std::string_view 不是字符串:从悬空引用到安全用法
java·开发语言·c++
小小龙学IT7 小时前
C++ 正则表达式完全指南:从 std::regex 实战到 RE2 引擎原理(NFA/DFA/回溯陷阱)
c++·正则表达式
码匠许师傅10 小时前
【C++ 面试真题】聊聊 C++ 的序列容器
java·c++·面试
C++ 老炮儿的技术栈10 小时前
Qt5.9.1 Windows 完整开发环境搭建流程
开发语言·c++·windows·qt·编辑器·代码化
欧特克_Glodon11 小时前
OpenCV计算机视觉开发入门与实践<十一>:矩阵的复制和矩形类Rect
c++·opencv·计算机视觉·矩阵
键盘会跳舞11 小时前
C++:std::tuple 源码级深度拆解——变参模板、SFINAE与模板元编程核心技巧
开发语言·c++·sfinae·变参模板
bkspiderx11 小时前
从零开始:VS Code搭建C/C++开发环境全指南(Windows/macOS/Linux)
c语言·c++·windows·vs code·c/c++开发环境