使用std :: array初始化2D数组的元素。 C ++

时间:2019-01-02 06:02:48

标签: c++ arrays

我正在使用std::array<array<float, 4,3> = . . . 我在理解如何格式化以下代码时遇到麻烦,因此不会出现以下错误:

g++ array2d_colors.cpp -o array2dcolors.o
array2d_colors.cpp: In function ‘void arrayStart()’:
array2d_colors.cpp:36:7: error: too many initializers for 
‘std::array<std::array<float, 4ul>, 3ul>’        };
       ^


using namespace;
  array<array<float,4>,3> color = {
      {  0.0 , 0.1686 , 0.2117 },
      {   0.0274 , 0.2117 , 0.2588},
      {   0.3450 , 0.4313 , 0.4588},
      {   0.3960 , 0.4823, 0.5137}
      };

此代码在另一项研究中起作用:

using namespace;
array<array<float, 2>, 2> a1 = {{{5,6},{7,8}}};

这是很多“ {的”。如果要创建一个16x3怎么办? 我会感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

您已将初始化程序数组转置为Agent::is('Windows'); Agent::isNexus(); Agent::isMobile(); 数组。因此,它与ReadData() { var self = this; Office.context.document.customXmlParts.getByNamespaceAsync("namespace", function (asyncResult) { self.ngxXml2jsonService = asyncResult }); }的声明不匹配。

您可以使用:

4 x 3

如果需要一个color数组,则必须更改初始化程序数组。

例如:

array<array<float, 3>, 4> color = 
   {
      {  0.0 , 0.1686 , 0.2117 },     // 1st of four of the outer array
      {  0.0274 , 0.2117 , 0.2588},
      {  0.3450 , 0.4313 , 0.4588},
      {  0.3960 , 0.4823, 0.5137}    // 4th of four of the outer array
   };

答案 1 :(得分:1)

问题1 :切换尺寸

vector

问题2 :在初始化程序中明确提及数组的类型。编译器无法推断出它。

df[paste0(names(df)[-1], ".var")] <- lapply(df[-1], function(x)
                                         ave(x, df$cluster, FUN = min) - x)
df
#  cluster x y x.var y.var
#1       A 3 4    -1    -3
#2       B 4 5    -3    -2
#3       B 1 3     0     0
#4       A 5 1    -3     0
#5       A 2 2     0    -1
#6       B 6 6    -5    -3

答案 2 :(得分:1)

做事时

 array<array<float,4>,3> color 

您说的是内部数组有4个元素,外部数组有3个元素。因此,当您定义3 * 4矩阵时,它变为4 * 3矩阵。

尝试做:

array<array<float,3>,4> color = {{
  {  0.0 , 0.1686 , 0.2117 },
  {   0.0274 , 0.2117 , 0.2588},
  {   0.3450 , 0.4313 , 0.4588},
  {   0.3960 , 0.4823, 0.5137}
  }};

并记得添加{{-在定义内部数组的数组之前添加两个大括号,您会很好的!!