Когда я преобразовываю код из C в С++, я иногда сталкиваюсь с языковыми конструкциями, которые являются C, но совместимыми с С++. Обычно я хочу преобразовать код в наименее навязчивый способ. Но у меня есть один случай, когда я нахожу это очень трудным:
В C вы можете объявить массив и инициализировать... хорошо... части, используя "указатели", остальные обнуляется (Edit: я написал "слева на случайность" здесь, сначала):
int data[7] = {
[2] = 7,
[4] = 9,
};
Это недопустимый код С++, хотя (к счастью). Поэтому мне придется использовать другую стратегию.
Пока я вижу неинтрузивный способ в С++ 11:
static const map<int,int> data = { {2,7}, {4,9} };
что делать, если возможности С++ 11 еще недоступны?
- Можно ли обойти инициализацию времени выполнения?
- Есть ли способ инициализировать аналогичный вид отображения в "литерале" ?
- Что означает наименее навязчивый код, который использует
data
?