假设我有一个带有布尔字段的结构
struct pBanana {
bool free;
};
现在,我有另一个包含pBanana结构向量的结构
struct handler_toto {
std::vector<pBanana > listBananas;
};
现在我很想返回列表中布尔自由为假的次数
int someFunction (mainHandler& gestionnaire)
{
return std::count(gestionnaire.listBananas.begin(), gestionnaire.listBananas.end(), gestionnaire.listBananas.operator[/*How to do it here */]);
}
在咨询documentation之后,我很难低估如何正确使用
operator[]
最佳答案
那是因为您不能使用operator[]
来执行此操作。
您可以使用std::count_if
(不是count
)和lambda函数(也就是匿名函数)来执行此操作:
return std::count_if(
gestionnaire.listBananas.begin(),
gestionnaire.listBananas.end(),
[](const pBanana &b) {return b.free;});
std::count_if
将为列表中的每个项目调用函数,并计算其返回true
的次数。