gpt4 book ai didi

c++ - 成员函数比较作为谓词

转载 作者:太空狗 更新时间:2023-10-29 21:06:50 24 4
gpt4 key购买 nike

我有这样的结构。

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

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

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

  2. 如何找到 _value 的对象是42 ?

我想我必须使用 bind 的组合和 equal_to , 但我找不到正确的语法。

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

编辑:

谢谢。但还有一个疑问。

如果我有 vector<A*> 会怎样或 vector<boost::shared_ptr<A> >

最佳答案

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 );

如果您确实需要编写绑定(bind)表达式(例如,使用无法用boost::bind 支持的运算符表达的仿函数 >):

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

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

关于c++ - 成员函数比较作为谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642464/

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