Gerade jetzt, ich habe diesen Code:vereinfachen einfachen C++ Code - so etwas wie Pythons jeden
bool isAnyTrue() {
for(std::list< boost::shared_ptr<Foo> >::iterator i = mylist.begin(); i != mylist.end(); ++i) {
if((*i)->isTrue())
return true;
}
return false;
}
I-Boost hier verwendet habe und dann, aber ich konnte nicht wirklich einfache Art und Weise erinnern, es zu schreiben etwas wie ich würde es in Python vielleicht schreiben, zB:
def isAnyTrue():
return any(o.isTrue() for o in mylist)
gibt es irgendein Konstrukt in STL/Boost, es zu schreiben mehr oder weniger wie das?
Oder vielleicht ein Äquivalent zu diesem Python-Code:
def isAnyTrue():
return any(map(mylist, lambda o: o.isTrue()))
Meistens frage ich mich, ob eine bestehende any
ist (und all
) gleichwertig in-Boost/STL noch. Oder warum nicht (weil es ziemlich nützlich scheint und ich es oft in Python verwende).
@sth: Wie ist diese Lösung? –
Boost hat eine foreach ('BOOST_FOREACH'). – Albert
@ Albert: Ja, tut es. Aber selbst in diesem Fall sollten Sie Algorithmusaufrufe zu expliziten Schleifen bevorzugen. –