关于for_each()的问题

loveyu 2002-10-23 03:48:22
如果我的for_each()在自己写的类中, 那在for_each()中的那个函数是否一定要定义为
static. 如为static, 如何访问我类中的成员变量
...全文
30 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
北极猩猩 2002-10-30
  • 打赏
  • 举报
回复
不用定义成静态的,
张友邦 2002-10-30
  • 打赏
  • 举报
回复
其实for_each是个很简单的算法,你完全可以自己在自己的类里重新写一个。
loveyu 2002-10-29
  • 打赏
  • 举报
回复
难道不能把for_each()封装在自己的类中
lattice 2002-10-24
  • 打赏
  • 举报
回复
参考mem_fun系列bind系列

#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cstdlib>

using namespace std;

class a
{
public:
a(int i=10){i_ = i;}
void g() const {cout<<"i= "<<i_<<endl;}
void f(int j)const {cout<<"i= "<<i_<<","<<"j= "<<j<<endl;}
private:
int i_;
};


int main()
{
vector<a> va(100);
for_each(va.begin(),va.end(),mem_fun_ref(&a::g));
for_each(va.begin(),va.end(),bind2nd(mem_fun_ref(&a::f),2));
system("Pause");
}
张友邦 2002-10-23
  • 打赏
  • 举报
回复
没有吧,不用定义为静态的。
xbin999 2002-10-23
  • 打赏
  • 举报
回复
2. 静态函数那只有访问静态的成员变量了
loveyu 2002-10-23
  • 打赏
  • 举报
回复
不是, 就像这样

void CMyClass::Test()
{
..
vector<string> vecStr;
for_each(vecStr.begin(), vecStr.end(), IsEqual);
...
}

void CMyClass::IsEqual(CString &str)
{
....str....
。。。。。。

}

问题:1, IsEqual()一定要定义为 static 吗?
2, 如IsEqual()为static, 在该函数中如何访问CMyClass中的成员变量

kwok_1980 2002-10-23
  • 打赏
  • 举报
回复
怎么在你的类里面的???
你自己写的for_each??

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧