您的位置:首页 > 编程语言 > C语言/C++

C++每日一练(STL算法——for each)

2016-10-26 19:12 239 查看

一、今日课题

for each

二、实战演练

template<class InputIterator, class Function>
Function for_each(InputIterator first, InputIterator last, Function fn)
{
while (first!=last)
{
fn (*first);
++first;
}
return fn;  // or, since C++11: return move(fn);
}


1)有何用?

假有一个类型为ContainerType类型的容器Container,它的每个元素的类型ElementType。

在C#中,数组就是这样一种容器。

在C++中,stl的vector、map等也是这样的容器。

如果要遍历容器Container的每个元素,在C#中可以使用如下代码:

foreach( ElementType element in Container)
{ // 使用element访问该元素
}


而在C++中,通常的代码都会是这样:

Container::iterator iter;
for (iter = Container.begin(); iter!=Container.end(); iter++)
{ // 使用(*iter)访问该元素
}


显然C#中的代码更清晰的多。而C++的代码中包含了变量声明和循环控制,显得更复杂了。

2)怎么用?

#include <algorithm>
#include <vector>
#include <iostream>

using namespace std;

int main()
{
int nums[3] = { 1, 2, 3 };
vector<int>  vs = { 0, 1, 2, 3, 4 };
for (int num:nums)
{
cout << num <<" \t";
}
cout << endl;

for each(int v in vs)
{
cout << v << "\t";
}

system("pause");
return 0;
}


三、C++树



10/26/2016 7:10:53 PM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: