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万+

Unity游戏开发客户端Unity基础

Unity游戏开发客户端面经 之 Unity 篇

Sea3752的博客 2万+

C++中的for-each循环

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

weixin_44259499的博客 4484

Ubuntu下NVIDIA驱动安装全攻略:从报错到完美运行nvidia-smi的完整流程

本文提供了在Ubuntu系统中安装NVIDIA驱动的完整解决方案,重点解决因驱动版本冲突、内核模块未加载或Secure Boot安全启动导致的`nvidia-smi`报错问题。通过彻底清理旧驱动、处理Secure Boot、选择兼容版本并正确安装,最终确保驱动完美运行。

weixin_29196891的博客 364

【自适应调制】自适应调制解调通信链路误码率matlab仿真与分析

BPSK中的B是“Binary”的意思,也就是有两个变化状态,比如说相位上的“+90°(代表1)、-90°(代表0)”,一个状态代表的就是一个比特。QPSK的“Q”是“Quadrature”的意思,有四个变化状态,如相位上的“+45°(代表00)、-45°(代表11)、+135°(代表10)、-135°(代表01)”,那么一个状态就代表两个比特的信息,如图2所示。同理8PSK的一个状态代表三个比特。但是功率资源并不是无限的,基站总的发射功率是一定的,为了充分利用所有的功率,采用的就是AMC技术。

FPGA/MATLAB学习教程/源码/项目合作开发 1833

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万+

【PyTorch】CNN(一维卷积Conv1D)实现时间序列预测

本文介绍了一维卷积神经网络(Conv1D)在时间序列预测中的应用,展示了其基本原理及实现方式。通过合适的数据预处理和模型调参,Conv1D可以有效地捕捉时间序列数据中的模式,从而进行精准预测。

走向CTO的路上... 1173

【C++】for_each()

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

笔记 4714

【华为OD机试真题】45、 分糖果 | 机试真题+思路参考+代码解析(C++、Java、Py、JS)

### 🎃题目描述 >小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 >  当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 >  小明最少需要多少次(取出、放回和平均分配均记一次),能将手中糖果分至只剩一颗。

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 1290

Vibe coding 氛围编程:编程就像聊天一样,低代码开发时代来了?

Vibe coding:编程就像聊天一样,低代码开发时代来了!

Code_流苏:在代码中寻诗意,在实践中觅真知 4803

在C++中实现foreach循环

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

1万+

innovus:insert Power Switch失败,报告not covered by a row问题解析

这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1159

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

冠层分析法提取叶面积指数及其应用

冠层分析法是利用植物冠层空间结构分析LAI的方法。其基本原理是通过相机或扫描仪对植物冠层垂直方向的照片或图像进行获取,再运用图像处理方法实现植被的自动识别和覆盖度计算,以此推算LAI。假设有一块田地,需测量其LAI,首先在田地中央设置一杆高度为3米、朝向田地中心、覆盖角度为50度的相机。利用上述函数,对相机采集到的图像进行处理,即可得到田地的LAI。在Matlab中,读取图片可以使用imread函数,对图片进行预处理可以使用imadjust函数调整灰度,使用imbinarize函数进行二值化处理。

m0_47037246的博客 739

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

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

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

ken2232的博客 1832

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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、付费专栏及课程。

余额充值