В настоящее время у меня есть две карты, которые связывают значения перечисления со строками, одно направление для преобразования входных данных файла во внутреннее представление, другое для вывода (отладки) информации об этом внутреннем представлении.Я хотел бы изменить карту на вектор для более быстрого доступа и преобразования.Но тогда эта функция, которая работает должным образом, не будет работать:
template<class T, class Y>
const T & map_value( const std::map<Y,T> &map, const Y &key )
{
return (*map.find(key)).second;
}
Так что я попытался сделать это так:
template<class Cont, class T, class Y>
const T & map_value( const Cont &map, const Y &key )
{
return map[key];
}
Но тогда я не получаю подходящую функциювызов.У меня только что было прозрение, пишущее этот вопрос;const map
не имеет члена operator[]
, что делает это трудным делом.Как мне написать map_value, чтобы он работал как можно быстрее для vector
и map
?