繁体   English   中英

根据结构成员数据从向量返回结构项的函数

[英]Function that returns struct item from a vector based on structs member data

我是C ++的新手,所以我对lambda函数的工作方式不太熟悉。 我想查看向量“问题”是否包含结构项,其特定成员值等于“ animalProblemNumber”。 然后,我想返回整个struct项目。 以下是我要实现的“ for循环版本”。

我还具有一个名为“ checkProblem”的函数,以首先查看“问题项”是否存在。 我可以在一个功能中同时实现这两个功能吗?

谢谢能够帮助我的人。

Problem getProblem(int animalProblemNumber, std::vector<Problem>      problems){
for(Problem p: problems){
    if(p.treatment == animalProblemNumber){
        return p;
    }
}

}

bool checkProblem(int animalProblemNumber, std::vector<Problem> problems){    //change this to lambda 
for(Problem p: problems){
    if(p.treatment == animalProblemNumber){
        return true;
    }
}
return false;
}
  1. 如果vector不包含至少一个匹配项,则getProblem()的返回类型将是一个问题,不是双关语。 最好返回一个迭代器。

  2. 将输入更改为const& getProblem()以使返回的迭代器在函数返回时有效。

  3. 之后,您可以使用getProblem()实现checkProblem() j

  4. 也可以将checkProblem()更改为接受const&尽管严格没有必要。

std::vector<Problem>::const_iterator getProblem(int animalProblemNumber,
                                                std::vector<Problem> const& problems)
{
    return std::find_if(problems.begin(), problems.end(),
                        [animalProblemNumber](Problem const& item)
                        { return item.treatment == animalProblemNumber; });
}

bool checkProblem(int animalProblemNumber, std::vector<Problem> const& problems)
{
   return (getProblem(animalProblemNumber, problems) != problems.end());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM