C++ 在初始化器中指定数组索引,如 C

标签 c++ c

我以前用过 C(嵌入式东西),我可以像这样初始化我的数组:

int widths[] = { [0 ... 9] = 1, [10 ... 99] = 2, [100] = 3 };

即我可以在初始化程序中指定索引。 目前我正在学习 Qt/C++,我不敢相信 C++ 不支持它。

我有这个选项:-std=gnu++0x,但无论如何它不受支持。 (我不知道 C++11 是否支持它,因为 Qt 在 gcc 4.7.x 上有问题)

那么,C++真的不支持吗?或者也许有办法启用它?

UPD:目前我想初始化 const 数组,所以 std::fill 将不起作用。

最佳答案

嗯,你应该使用 std::fill_n() 来完成那个任务......

如此处所述 http://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html指定的初始化(扩展)未在 GNU C++ 中实现

编辑:取自此处:initialize a const array in a class initializer in C++

正如评论所说,您可以使用 std:vector 来获得所需的结果。您仍然可以用另一种方式强制使用 const 并使用 fill_n。

int* a = new int[N];
// fill a

class C {
  const std::vector<int> v;
public:
  C():v(a, a+N) {}
};

关于C++ 在初始化器中指定数组索引,如 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13562892/

相关文章:

c++ - 访问本地 linux 线程栈 (pthreads)

c++ tga 解析 incorrect_color/distortion with some resolutions

c# - 无法获取结构 C# 的指针

c++ - 如何在 C++ 中避免/检查这个非常险恶的错误源

c++ - 优化功能以将位写入文件

c - 将 Haskell 中数组的指针传递给 C 函数

c - 制作一个C程序来编译另一个

c - C 中 scanf 和字符串的段错误

c - 如何允许子进程创建嵌套的用户命名空间?

C程序为结构体动态分配内存,然后memcpy输入到