#include <vector>
#include <algorithm>
#include <functional>
#include <iostream>
template<typename T>
std::vector<T> keep(
const std::vector<T> &original,
std::function<bool(const T&)> useful)
{
std::vector<T> out;
for(T item:original)
{
if(useful(item))
out.push_back(item);
}
return out;
}
int main()
{
std::vector<int> a={4,6,2,-5,3,-8,13,-11,27};
a=keep(a,std::function<bool(const int&)> ( [](const int& x)->bool{return x>0;}));
for(int y:a)
{
std::cout<<y<<std::endl;
}
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0ZDo6dmVjdG9yPFQ+IGtlZXAoCiAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJm9yaWdpbmFsLAogICAgICAgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFQmKT4gdXNlZnVsKQp7CiAgICBzdGQ6OnZlY3RvcjxUPiBvdXQ7CiAgICBmb3IoVCBpdGVtOm9yaWdpbmFsKQogICAgewogICAgICAgIGlmKHVzZWZ1bChpdGVtKSkKICAgICAgICAgICAgb3V0LnB1c2hfYmFjayhpdGVtKTsKICAgIH0KICAgIHJldHVybiBvdXQ7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp2ZWN0b3I8aW50PiBhPXs0LDYsMiwtNSwzLC04LDEzLC0xMSwyN307CiAgICBhPWtlZXAoYSxzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgaW50Jik+ICggW10oY29uc3QgaW50JiB4KS0+Ym9vbHtyZXR1cm4geD4wO30pKTsKCiAgICBmb3IoaW50IHk6YSkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQ8PHk8PHN0ZDo6ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9