- 前言
- 1.foreach是什么
- 2.foreach怎么用
- 3.foreach的优点
- 4.for和foreach的效率对比
- 5.个人见解
前言
foreach是新版C++才引入的(好像是从11开始引入的),如果是旧版C++可能没有foreach这个方法。
1.foreach是什么简单的讲foreach就是for的简化版,任何一个foreach都能改写成for语句。这里需要明确一点就是foreach只能用于数组或者列表的遍历。
2.foreach怎么用例子:
//这里是QT的语法,所以是QStringList
QStringList ql_initPage;
ql_initPage.append("balala");
ql_initPage.append("xiaomoxian");
foreach(QString str_initPage,ql_initPage)
{
qDebug<
从上面的例子就可以看出具体的用法了,下面看一下具体的语法:
foreach(int i,strList_initPage)
{
i=1;
}
int i即为待赋值变量,strList_initPage为待循环列表或数组,i=1即为要执行的操作。斜体样式
3.foreach的优点
优点:其实从面的例子就可以看出来了,foreach相对于for语句更加的简洁且效率更高;
上面的例子在操作列表的时候没有关心始索引是0还是1,那显而易见就的出了第二个优点不需要考虑数组或列表的起始索引,不需要担心越界问题。
4.for和foreach的效率对比
这里以例子进行比较,场景:吉吉国王心情好给森林里的小动物发水果。
用C++实现那可能常用的就是for,那我们先看for语句:
for(int i=0;i
i=1;
}
上面这个代码换成中文就是这个意思:
吉吉国王:毛毛咱们森林里都有多少动物啊?
毛毛:回吉吉国王,咱们森林里一共有两个动物。(别纠结为什么这么少动物,因为熊出没的动物我记得熊大和熊二了。。。。。。)
吉吉国王:那你先把第一个小动物叫来领赏吧。
毛毛:好的,吉吉国王。
第一个小动物:吉吉喊俺干啥呀?
吉吉国王:没事,本王心情好给你发点水果,拿完之后去喊第二个小动物吧。
…
吉吉国王:毛毛啊,刚才来的那个是第几个小动物啊?
毛毛:回吉吉国王,那是第二个小动物。
吉吉国王:那森林里的小动物都来领过了吧?
毛毛:是的,吉吉国王。
这里这段对白差不多就是for循环执行时的情况了,下面我们看一下foreach:
foreach(QString i;i
i=1;
}
这里的代码段转换成中文对白就是:
吉吉国王:毛毛,本王今天心情好,去给森林里的每个小动物都去发点咱们的水果。
毛毛:好的,吉吉国王。
我们不看代码,就看单纯的中文对白其实我们自己就有一个关于两者区别的认识了,我也就不多废话了。(单纯的懒,不想组织语言+_+)
5.个人见解
能用foreach的就少用for,就foreach而言是不需要担心越界问题的,就凭这一点就可以直呼牛批了。但是,需要注意的是使用foreach会加大开销,具体原因百度一坨,大家可以自行查阅。



