我正在用 C++ 编写代码。我有一个包含这么多文件的项目。我有一个名为 list 的对向量,如下所示:
std::vector< std::pair< structure1, double> > list;
我想检查一个特定的双精度值z
是否存在一个元素:el
在列表中,这样: el.second == z
我想用find_if
为此,我实现了一个方法:Scheduled
它接受两个参数:第一个是存储在列表中的元素,第二个是要查找的特定值。我尝试了几种方法,但最终总是以第一种方式出现错误:
bool classA::Scheduled(std::pair< structure1,double > const el, double const t )
{
return el.second==t;
}
在另一个方法中但仍在同一个类中:classA
auto Scheduled1 = std::bind(&classA::Scheduled,this,_1,z);
bool call=std::find_if(list.begin(),list.end(),Scheduled1)=!list.end();
此解决方案给出以下错误:
error: ‘Scheduled1’ does not name a type
第二种方式:直接使用 lambda
bool call = std::find_if(list.begin(),list.end(),[this](std::pair<struct1,double> const& el){return el.second==z;})!=list.end();
z 是 classA 的成员变量第二种编码方式会导致此错误:
error: no matching function for call to
'find_if(std::vector >::iterator, std::vector >::iterator, classA::method1(int)::__lambda0)'</p>