求教一下,关于for_each()的使用,对成员函数的调用问题
最近接触到for_each(),觉得终于可以摆脱for(vector<>::const_iterator.........)这恶心的语法了,感觉很愉快,但是在关于成员函数调用上遇到了麻烦。。。
具体地说,我想实现这个东西:
string s="abcdefg";
vector<int> vec;
for(iter=s.begin();......)
{
vec.push_back(*iter);
}
但是用for_each如何实现?
在网上查了很久,发现最接近的一种方法是
for_each(s.begin(),s.end(),mem_fun_ref(&vector<int>::push_back));
但是mem_fun_ref部分的成员函数必须属于string s,而不能属于vector<int> vec,请问我该怎么处理啊。。。
[解决办法]
打住吧,你会在stl的functor adaptor上被折腾到不是恶心,而是蛋碎的。
然后,你就会引入boost库,然后就麻烦更加大。
#include<iostream>#include<vector>#include<string.h>using namespace std;void func(char &a){ cout<<a; }int main(){ char* cptr="abcdefg";vector<char> vec;//这里是char while(*cptr!='\0')//楼主想实现的功能在这里 { vec.push_back(*cptr); cptr++; } for_each(vec.begin(),vec.end(),func);//对于foreach的用法。 system("pause"); return 0;}