在C ++中初始化一个二维数组

范斯·法兰纳(VansFannel)

我正在学习C ++,但遇到了问题。我在类头文件中有此声明:

double bgal[3][3] =
    { { -0.066988739415,-0.872755765852,-0.483538914632 },
    { 0.492728466075,-0.450346958020, 0.744584633283 },
    { -0.867600811151,-0.188374601723, 0.460199784784 } };

使用Visual Studio 2015可以正常编译,但是使用Visual Studio 2013则可以不编译。我收到此消息:

cannot specify explicit initializer for arrays

我认为问题与Visual Studio 2013不支持C ++ 11和编译器错误C2536有关。

我试图在类构造函数中移动该初始化,但是它不起作用。这个:

MyClass::MyClass() : bgal { { -0.066988739415, -0.872755765852, -0.483538914632 }, 
                            { 0.492728466075, -0.450346958020, 0.744584633283 },
                            { -0.867600811151, -0.188374601723, 0.460199784784 } }

但这是行不通的。

有什么建议吗?也许我不能使这个向量恒定或静态,或者...

我已经尝试过了,bgal[0][0] = { ...}; bgal[0][1] = { ...};但这是很多工作。

它不是问题的重复项:错误:无法为数组指定显式的初始化程序,因为该问题询问一维数组,并且它提供了一种初始化数组的解决方案,bgal[0][0] = { ...}; bgal[0][1] = { ...};因为它需要大量工作。我问是否还有另一种方法可以更快地做到这一点。

在寻找可能重复的问题之前,请仔细阅读问题。

巴托斯·普尔兹贝斯基(Bartosz Przybylski)

继续进行评论,并根据以下问题进行讨论:错误C2536的变通办法:无法在Visual Studio 2013中为数组指定显式初始化程序

您可以使用类似这样的东西,尽管它不像一个或多个原始数组那么漂亮

array<array<double, 3>, 3> a({
    array<double,3>({ -0.066988739415,-0.872755765852,-0.483538914632 }),
    array<double,3>({ 0.492728466075,-0.450346958020, 0.744584633283 }),
    array<double,3>( { -0.867600811151,-0.188374601723, 0.460199784784 }) });

为了使其更漂亮,您可以随时定义一个辅助宏

#define DD array<double,3>

array<array<double, 3>, 3> a({
    DD({ -0.066988739415,-0.872755765852,-0.483538914632 }),
    DD({ 0.492728466075,-0.450346958020, 0.744584633283 }),
    DD( { -0.867600811151,-0.188374601723, 0.460199784784 }) });
#undef DD

您总是可以尝试使用带有初始化列表的矢量的矢量,例如:https : //ideone.com/lQ12a4

vector<vector<double> > a{
    { -0.066988739415,-0.872755765852,-0.483538914632 },
    { 0.492728466075,-0.450346958020, 0.744584633283 },
    { -0.867600811151,-0.188374601723, 0.460199784784 } };

我不知道这是否可以在您的编译器上正常工作,但是根据以下内容:https : //msdn.microsoft.com/en-US/library/hh567368.aspx应该可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我如何在C中初始化一个二维数组

用其他2个数组初始化的二维C#数组

c++ 用一个新类初始化二维向量;默认值更改

使用指针数组在 C 中初始化二维数组

在 C++ 中初始化二维向量

如何在 C++ 中的构造函数内初始化二维数组?

在C ++中初始化具有不同列大小的二维数组

C++ 通过一维向量的函数初始化二维向量

c ++函数创建一个二维数组并返回一个指向二维数组的指针

C - 初始化后二维数组打印崩溃

从多个文本文件初始化二维数组C#

初始化二维动态数组c ++时读取访问冲突

C - 在从函数返回双指针之前初始化二维数组内的结构

从 C 中的另一个函数访问二维数组

如何在 C 中传递一个二维数组作为函数的参数?

C中的动态二维数组不读取第一个元素

将大型二维数组初始化为 C++ 中的所有值

在C ++中初始化静态二维映射<int,int>

在 C++ 中,对于大于 41260 的值,二维向量初始化失败

C ++如何在二维向量初始化中创建不同的向量?

错误:在C中初始化二维结构变量时的预期表达式

如何在Julia中初始化一个空的二维数组?

有没有办法用输入的维度初始化二维数组中的所有项目,而无需在 C++ 中循环?

如何在不带';的情况下初始化二维数组 预期的C#中的编译器错误?

在 C 中创建一个函数来检查二维数组中是否有相邻的相等元素

如何在C ++中使用memset或fill_n初始化动态二维数组

C二维数组:第一个“级别”是指针数组吗?

在C中将两个二维数组合并为一个一维数组

C:二维数组的大小 - 指针和第一个元素之间的差异