木风可可 2021-08-03 09:58 采纳率: 50%
浏览 33
已结题

Qt CPP 简化for循环代码, 将for简化成while


                  if(QString::compare(tagname, "g", Qt::CaseInsensitive) == 0) { // group
                    QDomNodeList list = e.childNodes();   // 遍历群组中所有标签
                    for(int i=0; i<list.count(); i++)
                    {
                        QDomNode n=list.at(i);

                        if(QString::compare(n.nodeName(), "g", Qt::CaseInsensitive) == 0) { // group
                            QDomNodeList list1 = n.childNodes();   // 遍历群组中所有标签
                            for(int i1=0; i1<list1.count(); i1++)
                            {
                                QDomNode n1=list1.at(i1);
                                if(QString::compare(n1.nodeName(), "g", Qt::CaseInsensitive) == 0) { // group
                                    QDomNodeList list2 = n1.childNodes();   // 遍历群组中所有标签
                                    for(int i2=0; i2<list2.count(); i2++)
                                    {
                                        QDomNode n2=list2.at(i2);
                                        qout << n2.nodeName();
                                        parseSVGTag(n2.toElement(), n2.nodeName());
                                    }
                                } else {
                                    qout << n1.nodeName();
                                    parseSVGTag(n1.toElement(), n1.nodeName());
                                }
                            }
                        } else {
                            qout << n.nodeName();
                            parseSVGTag(n.toElement(), n.nodeName());
                        }
                    }
                } else {
                    qout << tagname;
                    parseSVGTag(e, tagname);
                }

如何用while循环简化代码?

此段代码的作用是碰到group标签就打开遍历

  • 写回答

2条回答 默认 最新

  • 全栈极简 博客专家认证 2021-08-03 10:08
    关注

    while循环和for循环是一样的,经过测试,while循环反而比for循环更慢。因此,你的问题应该是优化你的逻辑,而不是用while循环简化你的代码。

    评论
  • 樱花の雨 2021-08-05 09:55
    关注
    
     if(QString::compare(tagname, "g", Qt::CaseInsensitive) == 0)
        { // group
            QDomNodeList list = e.childNodes();   // 遍历群组中所有标签
    
            int i=0;
            while (i<list.count())
            {
                QDomNode n=list.at(i);
                if(QString::compare(n.nodeName(), "g", Qt::CaseInsensitive) == 0)
                { // group
                    QDomNodeList list1 = n.childNodes();   // 遍历群组中所有标签
                    int j=0;
                    while (j<list1.count())
                    {
                        QDomNode n1=list1.at(i1);
                        if(QString::compare(n1.nodeName(), "g", Qt::CaseInsensitive) == 0) { // group
                            QDomNodeList list2 = n1.childNodes();   // 遍历群组中所有标签
                            for(int i2=0; i2<list2.count(); i2++)
                            {
                                QDomNode n2=list2.at(i2);
                                qout << n2.nodeName();
                                parseSVGTag(n2.toElement(), n2.nodeName());
                            }
                        } else {
                            qout << n1.nodeName();
                            parseSVGTag(n1.toElement(), n1.nodeName());
                        }
                        j++;
                    }
                } else {
                    qout << n.nodeName();
                    parseSVGTag(n.toElement(), n.nodeName());
                }
                i++;
            }
        } else {
            qout << tagname;
            parseSVGTag(e, tagname);
        }
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月10日
  • 修改了问题 8月3日
  • 修改了问题 8月3日
  • 创建了问题 8月3日

悬赏问题

  • ¥15 Ros2编译一个使用opencv的c++节点的时候,报了这个错误,请问怎么解决啊
  • ¥15 人脸识别相关算法 YOLO,AI等
  • ¥15 spark问题方便加V17675797079
  • ¥15 Python代码不打印的原因
  • ¥20 微软SEAL库的安装和使用,VS2022环境配置问题
  • ¥15 数学问题也不知道那种类型的问题
  • ¥15 R作图的时候,文本框重叠了怎么办?
  • ¥15 用python重建流场
  • ¥15 stm32 调试舵机pwm输出异常
  • ¥15 单片机led闪烁3秒后急速闪烁后停止