[英]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;
}
如果vector
不包含至少一个匹配项,则getProblem()
的返回类型将是一个问题,不是双关语。 最好返回一个迭代器。
将输入更改为const&
getProblem()
以使返回的迭代器在函数返回时有效。
之后,您可以使用getProblem()
实现checkProblem()
j
也可以将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.