3

我有这样的结构。

struct A
{
  int someFun() const;
  int _value;
};

我将这种结构的对象存储在一个向量中。

  1. 如何找到其成员someFun()返回的对象42

  2. 如何找到属于的_value对象42

我想我必须使用 and 的组合bindequal_to但我找不到正确的语法。

vector<A> va;
vector<A>::const_iterator val = find_if(va.begin(),va.end(),boost::bind(???,42));

编辑:

谢谢。但还有一个疑问。

如果我有vector<A*>orvector<boost::shared_ptr<A> >怎么办?

4

1 回答 1

4
vector<A> va;

vector<A>::const_iterator v0 = find_if(
    va.begin()
    , va.end()
    , boost::bind(&A::someFun, _1) == 42 );

vector<A>::const_iterator v1 = find_if(
    va.begin()
    , va.end()
    , boost::bind(&A::_value, _1) == 42 );

如果您确实需要编写绑定表达式(例如,使用functor不能用 支持的运算符表示的a boost::bind):

vector<A>::const_iterator v1 = find_if(
    va.begin()
    , va.end()
    , boost::bind(functor(), boost::bind(&A::someFun, _1), 42) );

这导致functor::operator()使用以下参数调用:在绑定表达式的参数上调用成员的结果,以及 42。

于 2011-07-10T17:00:27.700 回答