En ce moment, j'ai ce code:simplifier le code C++ simple - quelque chose comme Pythons toute
bool isAnyTrue() {
for(std::list< boost::shared_ptr<Foo> >::iterator i = mylist.begin(); i != mylist.end(); ++i) {
if((*i)->isTrue())
return true;
}
return false;
}
Je l'ai utilisé Boost ici et là, mais je ne me souvenais vraiment une façon simple d'écrire un peu comme Je peut l'écrire en Python, par exemple:
def isAnyTrue():
return any(o.isTrue() for o in mylist)
y at-il construit en STL/Boost pour l'écrire plus ou moins comme ça?
Ou peut-être un équivalent à ce code Python:
def isAnyTrue():
return any(map(mylist, lambda o: o.isTrue()))
Je suis Surtout demandais s'il y a une any
existante (et all
) équivalente encore Boost/STL. Ou pourquoi pas (parce que cela me semble assez utile et je l'utilise assez souvent en Python).
@sth: Comment est cette solution? –
Boost a une foreach ('BOOST_FOREACH'). – Albert
@Albert: Oui, c'est le cas. Mais même dans ce cas, vous devriez préférer les appels d'algorithme aux boucles explicites. –