コードを C から C++ に変換すると、C であるが C++ と互換性のある言語構造に遭遇することがあります。通常、コードを最も邪魔にならない方法で変換したいと考えています。しかし、それが非常に難しいと感じるケースが 1 つあります。
Cでは、配列を宣言して初期化することができます...まあ... 「指定子」を使用してその一部、残りはゼロにされます(編集:最初に「左にランダムに」と書きました):
int data[7] = {
[2] = 7,
[4] = 9,
};
ただし、これは有効な C++ コードではありません (幸いなことに)。そのため、別の戦略を使用する必要があります。
C ++ 11で非侵入的な方法を見ることができますが:
static const map<int,int> data = { {2,7}, {4,9} };
C++11 の機能がまだ利用できない場合はどうすればよいですか?
- ランタイムの初期化を回避できますか?
- 同様の種類のマッピングを「リテラル」な方法で初期化する方法はありますか?
- を使用するコードへの影響が最も少ない
data
のはどれですか?