史上最全的QMap遍历方式

QMap是Qt中的一个关联容器,它提供了一种键值对的映射关系。可以通过键快速查找对应的值。遍历QMap可以使用以下几种方式:

   QMap<QString, int> map;
   map.insert("a", 1);
   map.insert("b", 2);
   map.insert("c", 3);
    第一种:迭代器遍历
    1. 可以修改容器中的元素值,是可读可写的遍历方式。
    QMap<QString, int>::iterator itor;
    for (itor = map.begin(); itor != map.end(); ++itor)
    {
    	qDebug() << itor.key() << ":" << itor.value();
    }
    
      2. 使用了const_iterator,不能修改容器中的元素值,是只读的遍历方式。其中constBegin()返回指向QMap开头的常量迭代器,constEnd()返回指向QMap结尾的常量迭代器,itor.key()返回当前迭代器指向的键,itor.value()返回当前迭代器指向的值。
      for (QMap<QString, int>::const_iterator itor = map.constBegin(); itor != map.constEnd(); ++itor)
      {
      	qDebug() << itor.key() << ":" << itor.value();
      }
      
        3. 使用了QMapIterator,也可以修改容器中的元素值,是可读可写的遍历方式。与第一种遍历方式相比,QMapIterator提供了更多的功能,例如可以使用remove()函数删除当前迭代器指向的元素。
        QMapIterator<QString, int> itor(map);
        while (itor.hasNext())
        {
        	itor.next(); //移动到下一个元素  
            qDebug() << itor.key() << ":" << itor.value();
        }
        
          第二种:C++11的for循环遍历
          1.使用了QMap的toStdMap()函数将QMap转换为std::map。
          for (auto &pair : map.toStdMap())
          {
          	qDebug() << pair.first << ":" << pair.second;
          }
          
            2.使用QMap的keys()函数获取所有键的列表
            for (const auto &key : map.keys())
            {
            	qDebug() << key << ":" << map.value(key);
            }
            
              第三种:Qt中的Q_FOREACH循环遍历

              Q_FOREACH在Qt 2 中被引入,在 Qt 4 中进行了重构和改进,成为了一个更加强大和灵活的语言结构。

              foreach(const QString &key, map.keys())
              {
                 qDebug() << key << ":" << map.value(key);
              }
              
                第四种:std::for_each()算法遍历

                std::for_each()接受一个迭代器范围和一个函数对象,函数对象可以是lambda表达式,用于处理每个遍历到的元素。

                std::for_each(map.constBegin(), map.constEnd(), [](const auto &item) {
                	qDebug() << item.key() << ":" << item.value();
                	});
                
                  总结

                  使用C++11的for循环遍历和std::for_each遍历QMap的方式最为常用和简洁,效率也比较高,占用资源较少。但是,不同的遍历方式适用于不同的场景,需要根据具体情况选择合适的遍历方式。如果需要修改QMap中的元素,应该使用迭代器进行遍历。如果只需要读取QMap中的元素,可以使用const迭代器或者C++11的for循环遍历。

                  史上最全的QMap遍历方式-CSDN博客

                  评论
                  添加红包

                  请填写红包祝福语或标题

                  红包个数最小为10个

                  红包金额最低5元

                  当前余额3.43前往充值 >
                  需支付:10.00
                  成就一亿技术人!
                  领取后你会自动成为博主和红包主的粉丝 规则
                  hope_wisdom
                  发出的红包
                  实付
                  使用余额支付
                  点击重新获取
                  扫码支付
                  钱包余额 0

                  抵扣说明:

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

                  余额充值