C++中简单实现foreach循环

C++ foreach 实现 C++ foreach 注意: 本人是原创, 如若发现雷同, 后果自负 C++ 11 C++ 11 是直接支持的, 判断__cpp_range_based_for的值, 如果是200907L就是支持 #include <iostream> #include <vector> int main(void) { std::vector<int> vec{1,2,3,4,5}; #if __cpp_range_based_for >= 200907L for ( 阅读详情

  看别人用Qt写的程序时,偶然发现虽然程序中用到了foreach。foreach本来不是C++的关键字,但Qt是如何实现的呢?查看Qt的文档,里面说是用preprocesser(预处理)实现的。研究了一下,原来是宏定义。

  foreach宏的实质就是在宏中定义循环申明部分,而不包括循环体。在使用的时候,紧接着写循环体就行了。下面用std::vector<std::string>写了一个简单的示例。

#include <iostream>
#include 
<string>
#include 
<vector>

using namespace std;

#define foreach(var, list, type) 
    
for (type::iterator var = list.begin(); var != list.end(); var++)

int main(int argc, char* argv[]) {
    vector
<string> ss;
    ss.push_back(
"first");
    ss.push_back(
"second");
    ss.push_back(
"third");
    ss.push_back(
"fourth");
    ss.push_back(
"fifth");

    
foreach (item, ss, vector<string>) {
        cout 
<< *item << endl;
    }

    
return 0;
}

   不过从这个示例看来,这样定义的foreach并不能通用,如果遇到set还好,遇到map就傻了。也不能支持自定义的集合类型。要写一个通用性好一点的foreach,可能还需要写一两个类来辅助才行。问题先放在这里,空了再仔细研究研究。

QT的main.cpp的说明和foreach 我们在构件QT项目的时候,都会看到有这个main.cpp文件,可是我们又很少会在那里编写代码 ,可能大家不是很了解这个main.cpp的内容,这个文件是实现 main() 函数的文件,也很重要,下面这个是 main.cpp 文件里面的的内容。 #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); //a 为应用程序对象 ,在Qt中应用程序 阅读详情

相关推荐

foreach的使用

foreach详细用法和示例代码 VC6源码

c++中的 for_each 函数

std::for_each()

weixin_43165135的博客 2万+

STM32最小系统硬件组成详解

STM32最小系统硬件组成详解 0组成: 电源 复位 时钟 调试接口 启动 1、电源 : 一般3.3V LDO供电 加多个0.01uf去耦电容 2、复位:有三种复位方式:上电复位、手动复位、程序自动复位 通常低电平复位:(51单片机高电平复位,电容电阻位置调换) 上电复位,在上电瞬间,电容充电,RESET出现短暂的低电平,该低电平持续时间由电阻和电容共同决定,计...

alala120的博客 12万+

C++中的for-each循环

范围循环是C++中遍历容器、数组的一种简洁、直观的方式,能减少代码的复杂度,提高代码的可读性。通过对引用与常量的合理使用,可以更灵活地控制数据访问与修改。

weixin_44259499的博客 4484

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 407

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 429

c++中的那些foreach循环

1. c++中的 for_each 函数 for_each()事实上是個 function template,其源码如下 link:http://www.cplusplus.com/reference/algorithm/for_each/?kw=for_each template&amp;lt;typename InputIterator, typename Function&amp;gt; Function ...

xiong_min的博客 7万+

Cadence仿真实战:从零构建高精度带隙基准电压源

本文是一份详细的Cadence仿真实战指南,指导读者从零开始构建高精度带隙基准电压源。文章首先解释了带隙基准电压源稳定输出电压的原理,然后逐步演示了在Cadence Virtuoso环境中如何搭建测试电路、测量关键温度系数、计算并搭建核心电路,并通过参数扫描和迭代调优来驯服温度漂移,最终实现低漂移的基准电压输出。

weixin_29207533的博客 243

【C++】for_each()

当给定一个容器范围,我们通常需要对其中的每个元素执行相同的操作。这样的操作可能包括打印元素、修改元素的值或应用一个自定义函数等等。函数时,我们可以选择使用函数对象、函数指针或 Lambda 表达式作为操作函数。是一个非常方便的算法函数,可用于对容器中的元素执行相同的操作。都会自动遍历容器范围内的每个元素,并将每个元素传递给操作函数进行处理。算法函数提供了一种方便的方式来对容器范围内的元素执行指定的操作。的函数对象,并重载了圆括号操作符,使其可以像函数一样调用。以下是一个简单示例,展示了如何使用。

笔记 4714

DCN交换机通过boot模式升级

LIC导入成功后,输入enable进入特权模式,把网线接到通讯网口上,配置好对应interface vlan地址,在enable模式用 copy tftp://x.x.x.x/xxxxxx_nos.img nos.img待提示write ok时,reload设备完成升级。交换机启动后,在显示以下信息时输入“Ctrl+B”,一定得是手动按“Ctrl+B”进入的boot模式才能正常升级。升级交换机成功,在BootROM模式下,执行命令run或reboot,回到CLI配置界面。# 交换机通过boot模式升级。

m0_72501865的博客 947

qcom bypass node介绍

介绍qcom bypass node,以及如何让其生效

haodada1226的博客 2043

在C++中实现foreach循环

  使用过C#、PHP这些更高级语言的朋友一定知道foreach循环。foreach语句给编程带来了很大的方便,减少了代码,并增加了程序的可读性。C++虽然不支持foreach关键字, 但C++是一门强大的语言,只要稍微用一点小技巧,也可以在C++中使用foreach循环。在C#中,foreach语句的效果让人吃惊。foreach语句省去了复杂而又类似的循环控制语句,使代码非常简洁明了。下

1万+

015、PCIE带宽计算:理论vs实际——调试手记

最近在调一块图像采集卡,主控抱怨数据吞吐量上不去。规格书上写着PCIE 3.0 x4,理论带宽接近4GB/s,实际测试却卡在2.5GB/s左右。硬件同事拍胸脯说链路训练正常,软件同事咬定DMA配置没问题——这种场景是不是很熟悉?

z534437748的博客 883

c foreach循环_C ++中的foreach循环

c foreach循环 介绍 (Introduction) The foreach loop in C++ or more specifically, range-based for loop was introduced with the C++11. This type of for loop structure eases the traversal over an iterable dat...

从零开始的教程世界 8069

三菱FX5U气缸控制功能块(完整ST源代码+示例程序)

如果机器包含100个气缸,我们只需要修改数组的元素数量就可以了,效率非常的高。待续....博途PLC 面向对象系列之“双通气缸功能块“(SCL代码)_plc面向对象-优快云博客文章浏览阅读667次。本文介绍了博途PLC中面向对象编程的应用,重点讲解了双通气缸的功能块设计,包括双通电磁阀功能块、双通气缸的UDT数据类型以及SCL代码实现。同时,对比了双通与单通电磁阀的差异,并讨论了将单通气缸改造为双通气缸的方法,强调了双通气缸在安全性上的优势。

RXXW_Dor的博客 1029

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++11新特性:基于范围的循环(foreach)

在C++中如何遍历数组(集合)中的每一个元素?对于这个问题,相信你第一反应想到的是 for 循环。 #include <iostream> #include <set> using namespace std; void main() { int a[] = {1,2,3,4,5}; for (int i = 0; i < sizeof(a) / siz...

weixin_42136255的博客 7668

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C++11新特性:基于范围的循环(foreach) 与 Qt foreach(**)

C++11新特性:基于范围的循环(foreach)

ken2232的博客 1832

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java和cpp的forEach循环的区别

了解java和cpp的forEach循环的区别

Dhx_Go的博客 402

C++中的foreach用法

在c++中,一般人只知道foreach分开写为“for each”时的用法,却不知道“foreach”的用法。不多说,直接上代码。QStringList listTemp; QString strTemp1; QString strTemp2; tempList.append("aaa"); tempList.append("bbb"); tempList.ap

leyou2018 的博客 9万+

java foreach的实现_Java中foreach循环的实现原理

1、背景知识介绍java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢?因为面试时被问到,所以在这边做一个记录。2 什么是foreach循环?For-each语法内部,对collection是用nested iteratoration来实现的,对数组是用下标遍历来实现。Java 5 及以上的编译器隐藏了基于iteration和下...

weixin_35735685的博客 668

foreach for each for_each引发的探讨:c++世界中的循环语句

一 背景: 代码中看到 for each,注意,两个单词中间没有下划线,有同事问这个是不是和 for_each一样?和foreach呢?我回答应该一样,但是内心很不安,尤其是作为一个c++的多年用户。 二 资料收集整理: 1 首先来看看我们最熟悉的 for_each。 他的全名是 std::for_each,来源c++的stl。头文件<algorithm>. 当时是个模板函数了 template <class InputIterator, class Function> Functi

w_419675647的博客 2399
上一篇: 配置Eclipse+MinGW开发C/C++程序
下一篇: Perl5的OOP学习笔记
边城狂人
博客等级 码龄23年 139粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值