Teraz mam ten kod:uprościć prostego kodu C++ - coś jak pyton dowolny
bool isAnyTrue() {
for(std::list< boost::shared_ptr<Foo> >::iterator i = mylist.begin(); i != mylist.end(); ++i) {
if((*i)->isTrue())
return true;
}
return false;
}
Użyłem Boost, tu i potem, ale nie mogłem sobie przypomnieć żadnej prosty sposób napisać to trochę jak Może napisałbym to w Pythonie, np .:
def isAnyTrue():
return any(o.isTrue() for o in mylist)
Czy istnieje jakaś konstrukcja w STL/Boost, aby napisać ją mniej więcej tak?
Albo odpowiednik tego kodu Pythona:
def isAnyTrue():
return any(map(mylist, lambda o: o.isTrue()))
Głównie Zastanawiam się, czy istnieje jakikolwiek istniejący any
(i all
) równowartość w Boost/STL jeszcze. Lub dlaczego tak nie jest (ponieważ wydaje się całkiem przydatny i często go używam w Pythonie).
@sth: Jak to rozwiązanie? –
Zwiększenie ma foreach ('BOOST_FOREACH'). – Albert
@Albert: Tak, tak. Ale nawet w takim przypadku powinieneś preferować wywołania algorytmów do jawnych pętli. –