gpt4 book ai didi

C++ 为成员容器中的项调用for_each中的成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:05 25 4
gpt4 key购买 nike

如果我有这样一个类(模仿一些 STL 的容器):


class Elem {
public:
void prepare(); // do something on *this
// ...

};

class Selector {
public:
typedef vector<Elem *> container_type;
typedef container_type::iterator iterator;

iterator begin() { return cont_.begin(); }
iterator end() { return cont_.end(); }

void check_all();

private:
prepare_elem(Elem *p); // do something on 'p'
container_type cont_;

};

如果我想为“cont_”中的所有元素调用 prepare(),我可以以下功能:


void Selector::check_all() {
for_each(cont_.begin(), cont_.end(), mem_fun(&Elem::prepare));

}

我的问题是,如果我想调用 Selector::prepare_elem() 怎么办?“cont_”中的所有元素?我最初的方法无法编译:


void Selector::check_all() {
for_each(cont_.begin(), cont_.end(),
mem_fun(&Selector::prepare_elem));

}

第二种方法也失败了:


void Selector::check_all() {
for_each(cont_.begin(), cont_.end(),
bind1st(mem_fun(&Selector::prepare_elem), this));
}

有没有办法使用 std::for_each() 来调用选择器::prepare_elem()?

如果有办法,我想知道一个没有提升的解决方案。

最佳答案

如果你不想使用 boost::bind - 使用 std::tr1::bind。

关于C++ 为成员容器中的项调用for_each中的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3956832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com