for_each的使用
实例1 简单的对数组和容器进行操作
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
void printCube(
int n)
{
cout<<n*n*n<<endl;
}
int main()
{
int a[] = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9};
int len =
sizeof(a)/
sizeof(
int);
for_each(a,a+
10,printCube);
vector<int>iVec1(a,a+
10);
for_each(iVec1.begin(),iVec1.end(),printCube);
system(
"pause");
return 0;
}
实例2
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class printInfo
{
private:
int nSum;
int nMax;
int nMin;
int count;
public:
printInfo():count(
0),nSum(
0){}
int getnSum(){
return nSum;}
int getnMax(){
return nMax;}
int getnMin(){
return nMin;}
void operator() (
int x)
{
if(count ==
0)
{
nMax = x;
nMin = x;
}
else
{
if(nMin > x)
nMin = x;
if(nMax < x)
nMax = x;
}
count++;
nSum += x;
}
};
int main()
{
int a[] = {
1,
2,
3,
4,
5,
6,
7,
8,
9};
int len =
sizeof(a)/
sizeof(a[
0]);
printInfo P = for_each(a,a+len,printInfo());
cout<<
"最大值:"<<P.getnMax()<<endl;
cout<<
"最小值:"<<P.getnMin()<<endl;
cout<<
"和:"<<P.getnSum()<<endl;
system(
"pause");
return 0;
}
3.实例3
#include <iostream>
#include <algorithm>
#include <vector>
#include <functional>
using namespace std;
template<
class T,
class T1>
class printInfo:
public unary_function<T,T1>
{
private:
T nSum;
T nMax;
T nMin;
int count;
public:
printInfo():count(
0),nSum(
0){}
T getnSum(){
return nSum;}
T getnMax(){
return nMax;}
T getnMin(){
return nMin;}
T1
operator() (T x)
{
if(count ==
0)
{
nMax = x;
nMin = x;
}
else
{
if(nMin > x)
nMin = x;
if(nMax < x)
nMax = x;
}
count++;
nSum += x;
}
};
int main()
{
int a[] = {
1,
2,
3,
4,
5,
6,
7,
8,
9};
int len =
sizeof(a)/
sizeof(a[
0]);
printInfo<
int,
void> P = for_each(a,a+len,printInfo<
int,
void>());
cout<<
"最大值:"<<P.getnMax()<<endl;
cout<<
"最小值:"<<P.getnMin()<<endl;
cout<<
"和:"<<P.getnSum()<<endl;
system(
"pause");
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-1307478.html