В C++, вы можете сделать это:Компиляция времени структур данных, отличных от массивов?
static const char * [4] = {
"One fish",
"Two fish",
"Red fish",
"Blue fish"
};
... и что дает хороший только для чтения массива структуры данных, которая не принимает каких-либо циклов процессора для инициализации во время выполнения, так как все данные был выложен для вас (в исполняемых файлах памяти только для чтения) компилятором.
Но что, если я предпочитаю использовать другую структуру данных вместо массива? Например, если бы я хотел, чтобы моя структура данных, чтобы иметь быстрый поиск с помощью ключа, я должен был бы сделать что-то вроде этого:
static std::map<int, const char *> map;
int main(int, char **)
{
map.insert(555, "One fish");
map.insert(666, "Two fish");
map.insert(451, "Red fish");
map.insert(626, "Blue fish");
[... rest of program here...]
}
..., который является менее элегантным и менее эффективным, как структура данных карты получая заселение во время выполнения, хотя все данные были известны во время компиляции, и поэтому эта работа могла бы (теоретически) быть выполнена.
Мой вопрос в том, есть ли какой-либо способ в C++ (или C++ 11) для создания структуры данных только для чтения (например, карты), данные которой полностью настроены во время компиляции и, таким образом, готов к использованию во время выполнения, как может быть массив?
Не возражаете ли вы ответить на мой вопрос, похожий, но вектор? Мои значения имеют тип double http://stackoverflow.com/questions/15471122/getting-started-with-boost-mpl-with-vector-and-push-back – woosah