for_each使用

首先for_each的时候要加入头文件

#include

我在写一个让vector中数据都加2的函数
开始是这样写的

#include
#include
#include
#include
using namespace std;
template 
void add2(T i){
    i+=2;
    cout< vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    for_each(vec.begin(),vec.end(),add2);
    copy(vec.begin(),vec.end(),ostream_iterator(cout, " "));
}

结果是这样的:

这里并不会改变vector中的数据,其实想想就明白,这里应该用引用或指针

#include
#include
#include
#include
using namespace std;
template 
void add2(T i){
    i+=2;
    cout<
void add(T& i){
    i+=1;
}
int main(int argc, char** argv){
    vector vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    for_each(vec.begin(),vec.end(),add2);
    copy(vec.begin(),vec.end(),ostream_iterator(cout, " "));
    for_each(vec.begin(),vec.end(),add);
    cout<(cout, " "));
}


for_each使用_第1张图片

2

如果想改变任意加的值可以这样写

int val = 2;
template 
void add(T& i){
    i+=val;
}

3

然后我们一直都知道全局变量不好吧,所以我们这样改

#include
#include
#include
#include
using namespace std;
template 
class AddValues{

    private:
        T val;

    public:
        AddValues(T j):val(j){}
        void operator()(int& i){
            cout< vec;
    vec.push_back(1);
    vec.push_back(2);
    vec.push_back(3);
    int x =2;
    for_each(vec.begin(),vec.end(),AddValues(x));
    cout<(cout, " "));
}

for_each使用_第2张图片

你可能感兴趣的:(for_each使用)