假设我有一个带有布尔字段的结构

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的次数。

08-06 06:05