Прямо сейчас, у меня есть этот код:
bool isAnyTrue() {
for(std::list< boost::shared_ptr<Foo> >::iterator i = mylist.begin(); i != mylist.end(); ++i) {
if( (*i)->isTrue() )
return true;
}
return false;
}
Я использовал Boost здесь и тогда, но я не мог вспомнить какой-либо простой способ написать его так, как я мог бы написать его на Python,Например:
def isAnyTrue():
return any(o.isTrue() for o in mylist)
Есть ли какая-либо конструкция в STL / Boost, чтобы написать ее более или менее так?
Или, возможно, эквивалент этого кода Python:
def isAnyTrue():
return any(map(mylist, lambda o: o.isTrue()))
В основном мне интересно, существует ли какой-либо существующий any
(и all
) эквивалент в Boost / STL.Или почему нет (потому что это кажется довольно полезным, и я часто использую его в Python).