首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求教一上,关于for_each()的使用,对成员函数的调用有关问题

2012-09-28 
求教一下,关于for_each()的使用,对成员函数的调用问题最近接触到for_each(),觉得终于可以摆脱for(vector

求教一下,关于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库,然后就麻烦更加大。


探讨
另外就是如果以后有for_each(a.begin(),a.end(),f)而f是b的成员函数,这怎么处理啊。。

[解决办法]
楼主的vector<int> vec;这句应该是char型的吧。我给你写了如下代码,希望对你有用。
C/C++ code
#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;} 

热点排行