Мне было интересно, есть ли функция std :: map для получения подкарты, определенной как std :: vector ключей. Так же, как функция std::map.at(key)
, но с ключом std :: vector. Я знаю, что могу перебирать карту и добавлять пары карт на новую карту, но мне было интересно, есть ли встроенная функция или, возможно, более быстрый способ получить подкарту.
примерcode:
std::map<std::string, int> map = {{"a", 1}, {"b", 2}, {"c", 3}, {"d", 4}, {"e", 5}};
std::vector<std::string> keys = {"a", "c", "d"};
// using iteration:
std::map<std::string, int> new_map;
for(auto it = map.begin(); it != map.end(); ++it){
if(std::find(keys.begin(), keys.end(), it->first) != keys.end()){
new_map.insert(*it);
}
}
// new_map should be {{"a",1}, {"c",3}, {"d",4}}
// What I am hoping to find is something like:
new_map = map.at(keys);
//resulting in the same new_map {{"a",1}, {"c",3}, {"d",4}}.
Существует ли такая функция или вообще более умный способ, чем перебирать всю карту и каждый раз использовать функцию поиска (я знаю, что могу перебирать вектор, но это не такиметь большое значение, или это?).