gc имеет очень хорошее расширение в C, которое позволяет хранить данные в массивах с помощью перечисления в виде ключей:
enum keys
{
key_alpha = 0,
key_beta = 1,
key_gamma = 2
};
ValType values =
{
[ key_alpha ] = { 0x03b1,"alpha" },
[ key_gamma ] = { 0x03b3,"gamma" },
[ key_beta ] = { 0x03b2,"beta" }
};
Это хорошо, потому что, если список должен измениться, добавление или удаление строки не уничтожает назначение, очевидно, какой ключ соответствует какому значению и приводит к простому коду, не отличающемуся от простой стандартной инициализации массива.
К сожалению, это расширение недоступно в g++.
Каким будет предпочтительный легкий способ сделать то же самое на С++? Предпочтительно, что-то, не основанное на <map> и т.д., которые используют строковые ключи, скрытые индексы, тяжелые шаблоны или другие важные для процессора и памяти вещи?