#include <iostream>
#include <algorithm>
#include <vector>
std::vector<std::string> filtered_files(const std::vector<std::string>& files, const std::vector<std::string>& extensions)
{
std::vector<std::string> re;
for(const std::string &f : files)
{
if (std::find_if(extensions.begin(), extensions.end(),
[&](const std::string &ex){
return (f.size() >= ex.size()) && (f.compare(f.size()-ex.size(), ex.size(), ex) == 0);
}
) != extensions.end())
{
re.push_back(f);
}
}
return re;
}
int main()
{
std::vector<std::string> v{"main.cpp","main.c","main.py"};
std::vector<std::string> re = filtered_files(v,{".c",".cpp"});
for(const std::string s :re) {
std::cout << s << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGZpbHRlcmVkX2ZpbGVzKGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZmlsZXMsIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgZXh0ZW5zaW9ucykKewogICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlOwoKICAgIGZvcihjb25zdCBzdGQ6OnN0cmluZyAmZiA6IGZpbGVzKQogICAgewogICAgICAgIGlmIChzdGQ6OmZpbmRfaWYoZXh0ZW5zaW9ucy5iZWdpbigpLCBleHRlbnNpb25zLmVuZCgpLAogICAgICAgICAgICBbJl0oY29uc3Qgc3RkOjpzdHJpbmcgJmV4KXsKICAgICAgICAgICAgICAgIHJldHVybiAoZi5zaXplKCkgPj0gZXguc2l6ZSgpKSAmJiAoZi5jb21wYXJlKGYuc2l6ZSgpLWV4LnNpemUoKSwgZXguc2l6ZSgpLCBleCkgPT0gMCk7CiAgICAgICAgICAgIH0KICAgICAgICApICE9IGV4dGVuc2lvbnMuZW5kKCkpCiAgICAgICAgewogICAgICAgICAgICByZS5wdXNoX2JhY2soZik7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiByZTsKfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdnsibWFpbi5jcHAiLCJtYWluLmMiLCJtYWluLnB5In07CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gcmUgPSBmaWx0ZXJlZF9maWxlcyh2LHsiLmMiLCIuY3BwIn0pOwogICAgZm9yKGNvbnN0IHN0ZDo6c3RyaW5nIHMgIDpyZSkgewogICAgICAgIHN0ZDo6Y291dCA8PCBzIDw8ICdcbic7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=