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