if all([x > 1 for key in some_list]): print 'True'

Simply put, if every element of some_list is greater than 1, then true is returned. Similarly, there is another function called any which returns true is any element in a list is true. I decided to test out my C++ skills and write this. Here is my attempt.

template<class InputIterator, class UnaryFunction> bool all(InputIterator first, InputIterator last, UnaryFunction f) { bool allTrue; for(allTrue = true; first != last; ++first) { if(f(*first) == false) { allTrue = false; break; } } return allTrue; } template<class InputIterator, class UnaryFunction> bool any(InputIterator first, InputIterator last, UnaryFunction f) { bool anyTrue; for(anyTrue = false; first != last; ++first) { if(f(*first) == true) { anyTrue = true; break; } } return anyTrue; }

Now to use these functions, simply use it like any other STL function. Make a function or functor that takes the type of the list, and pass it to the any or all function.

struct apply { bool operator() (int x) { if(x > 1) { return true; } return false; } };

And now we just use it like you would expect.

int main() { std::vector<int> integers; integers.push_back(0); integers.push_back(1); integers.push_back(2); integers.push_back(3); bool result = all(integers.begin(), integers.end(), apply()); std::cout << "Result is: " << result << std::endl; result = any(integers.begin(), integers.end(), apply()); std::cout << "Result is: " << result << std::endl; return 0; }

Please give me your comments on what you think.

## No comments:

Post a Comment