У вас есть несколько очень хороших ответов здесь, но я для меня, это похоже на случай "когда все, что вы знаете, это молот" ...
Самый простой ответ на вопрос, почему не существует стандартного способа инициализации статической карты, - нет веской причины когда-либо использовать статическую карту ...
Карта - это структура, предназначенная для быстрого поиска неизвестного набора элементов. Если вы знаете элементы заранее, просто используйте C-массив. Введите значения отсортированным образом или выполните сортировку по ним, если вы не можете этого сделать. Затем вы можете получить производительность log (n), используя stl :: functions для зацикливания записей, lower_bound / upper_bound. Когда я проверял это ранее, они обычно работают как минимум в 4 раза быстрее, чем карта.
Преимущества многократно ...
- более высокая производительность (* 4, я измерял на многих типах процессоров, всегда около 4)
более простая отладка. Просто проще увидеть, что происходит с линейным макетом.
- Тривиальные реализации операций копирования, если это станет необходимым.
- Он не выделяет память во время выполнения, поэтому никогда не выдаст исключение.
- Это стандартный интерфейс, поэтому его очень легко обменивать, библиотеки DLL или языки и т. Д.
Я мог бы продолжить, но если вы хотите больше, почему бы не взглянуть на многочисленные блоги Страуструпа на эту тему.