当我将代码从 C 转换为 C++ 时,有时会遇到 C 语言结构,但与 C++ 兼容。通常我想以最少干扰的方式转换代码。但我有一个案例让我觉得这很困难:
在 C 中,您可以声明一个数组并初始化......嗯......它的一部分使用"designators",其余部分归零(编辑:我首先在这里写了“left to randomness”):
int data[7] = {
[2] = 7,
[4] = 9,
};
不过,这不是有效的 C++ 代码(幸运的是)。所以我将不得不使用不同的策略。
虽然我可以在 C++11 中看到一种非侵入式的方式:
static const map<int,int> data = { {2,7}, {4,9} };
当 C++11 功能尚不可用时,我该怎么办?
- 我可以绕过运行时初始化吗?
- 有没有办法以“文字”方式初始化类似类型的映射?
- 什么对使用的代码干扰最小
data
?