我有N个2d(列,行)数组。因此,我试图创建一个大小为N的数组指针,每个指针指向相应的2D数组。代码就像。
int col = 3,row = 2,N =2;
float blue[][row] = {1,2,3,4,5,6}; // 2d array (for N=1)
float green[][row] = {1,2,3,4,5,6}; // 2d array (for N=2)
float (*arry_ptr[N])[col][row]; // this works
arry_ptr[0]= &blue; // trying to point the 1st pointer to 1st 2d array
arry_ptr[1]= &green; // trying to point the 2nd pointer to 2nd 2d array
我知道最后两行代码不合适,但它确实会抛出错误。是否有任何解决方案来增加指针并使其按顺序指向2d数组,而不是像下面一行那样。
float (*arry_ptr[N]) ={a,b} // this works but i can allocate only single 2d array at a time.
答案 0 :(得分:1)
首先,C ++没有variable-length arrays,所以从技术上讲,你的代码不合法。维度需要是编译时常量。
其次,如果是我,我会使用std::array
代替,并使用类型别名。像这样:
| id | int(11) | NO | PRI | NULL | auto_increment |
| ip | varchar(50) | NO | | NULL | |
| polling_time | int(10) | NO | | NULL | |
| communitydata | varchar(100) | NO | | NULL | |
| snmp_oid | varchar(250) | YES | | NULL | |
| lastcheck | datetime
潜在地,取决于using array_type = std::array<std::array<float, 2>, 3>;
array_type blue = { ... }
array_type green = { ... }
array_type &array_refs[] = { blue, green };
和blue
数组的用途,我宁愿使用std::pair
而不是嵌套数组。所以请改为:
green
甚至是结构。
答案 1 :(得分:1)
现在我在最后两行没有收到任何错误。我只是将它改为常数整数,因为我使用的是固定大小.Dint监督它。
const int col = 3,row = 2,N =2;
float blue[][row] = {1,2,3,4,5,6}; // 2d array (for N=1)
float green[][row] = {1,2,3,4,5,6}; // 2d array (for N=2)
float (*arry_ptr[N])[col][row];
arry_ptr[0]= &blue; // trying to point the 1st pointer to 1st 2d array
arry_ptr[1]= &green; // trying to point the 2nd pointer to 2nd 2d array
干杯, LAKSHMI
答案 2 :(得分:0)
C ++被标记为,
这样做“float(* arry_ptr [N])= {a,b}”。我建议使用结构而不是普通数组。
Struct {float a,b}; //在此之后你可以做到。