C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C在for_each中为成员容器中的项调用成员函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个类(模仿一些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(),mem_fun(&SELEctor::prepare_elem));

}

第二种方法也失败了:

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

无论如何使用std :: for_each()来调用
选择:: prepare_elem()?

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

解决方法

如果你不想使用boost :: bind – 请使用std :: tr1 :: bind.

大佬总结

以上是大佬教程为你收集整理的C在for_each中为成员容器中的项调用成员函数全部内容,希望文章能够帮你解决C在for_each中为成员容器中的项调用成员函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。