标签:har names ios back ace tor 技术 结果 png
首先for_each的时候要加入头文件
#include<algorithm>
我在写一个让vector中数据都加2的函数
开始是这样写的
#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
template <typename T>
void add2(T i){
i+=2;
cout<<i<<endl;
}
int main(int argc, char** argv){
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for_each(vec.begin(),vec.end(),add2<int>);
copy(vec.begin(),vec.end(),ostream_iterator<int>(cout, " "));
}
结果是这样的:
这里并不会改变vector中的数据,其实想想就明白,这里应该用引用或指针
#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
template <typename T>
void add2(T i){
i+=2;
cout<<i<<endl;
}
template <typename T>
void add(T& i){
i+=1;
}
int main(int argc, char** argv){
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for_each(vec.begin(),vec.end(),add2<int>);
copy(vec.begin(),vec.end(),ostream_iterator<int>(cout, " "));
for_each(vec.begin(),vec.end(),add<int>);
cout<<endl;
copy(vec.begin(),vec.end(),ostream_iterator<int>(cout, " "));
}
如果想改变任意加的值可以这样写
int val = 2;
template <typename T>
void add(T& i){
i+=val;
}
然后我们一直都知道全局变量不好吧,所以我们这样改
#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
template <typename T>
class AddValues{
private:
T val;
public:
AddValues(T j):val(j){}
void operator()(int& i){
cout<<i + val<<endl;
i += val;
}
};
int main(int argc, char** argv){
vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
int x =2;
for_each(vec.begin(),vec.end(),AddValues<int>(x));
cout<<endl;
copy(vec.begin(),vec.end(),ostream_iterator<int>(cout, " "));
}
标签:har names ios back ace tor 技术 结果 png
原文地址:https://www.cnblogs.com/cyssmile/p/12790430.html