#include <vector>
#include <unordered_map>
template <typename K, typename... TArgs, template<typename...> class TContainer>
std::vector<K> getKeys(const TContainer<K, TArgs...>& mMap)
{
std::vector<K> result;
for (auto p : mMap)
result.push_back(p.first);
return result;
}
template <typename Container>
auto getKeys2(const Container& mMap) -> std::vector<typename Container::key_type>
{
std::vector<typename Container::key_type> result;
for (auto p : mMap)
result.push_back(p.first);
return result;
}
int main()
{
std::unordered_map<int, int> m;
m[1] = 4;
m[2] = 7;
std::vector<int> keys = getKeys(m);
std::vector<int> keys2 = getKeys2(m);
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUuLi4gVEFyZ3MsIHRlbXBsYXRlPHR5cGVuYW1lLi4uPiBjbGFzcyBUQ29udGFpbmVyPgpzdGQ6OnZlY3RvcjxLPiBnZXRLZXlzKGNvbnN0IFRDb250YWluZXI8SywgVEFyZ3MuLi4+JiBtTWFwKQp7CiAgICBzdGQ6OnZlY3RvcjxLPiByZXN1bHQ7CiAgICBmb3IgKGF1dG8gcCA6IG1NYXApCiAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhwLmZpcnN0KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+CmF1dG8gZ2V0S2V5czIoY29uc3QgQ29udGFpbmVyJiBtTWFwKSAtPiBzdGQ6OnZlY3Rvcjx0eXBlbmFtZSBDb250YWluZXI6OmtleV90eXBlPgp7CiAgICBzdGQ6OnZlY3Rvcjx0eXBlbmFtZSBDb250YWluZXI6OmtleV90eXBlPiByZXN1bHQ7CiAgICBmb3IgKGF1dG8gcCA6IG1NYXApCiAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhwLmZpcnN0KTsKICAgIHJldHVybiByZXN1bHQ7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBtOwogICAgbVsxXSA9IDQ7CiAgICBtWzJdID0gNzsKICAgIHN0ZDo6dmVjdG9yPGludD4ga2V5cyA9IGdldEtleXMobSk7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IGtleXMyID0gZ2V0S2V5czIobSk7Cn0=