[英]Create an array of an array of structs?
这个问题是关于结构体数组的语法。
我有一个接受两个整数的结构:
struct point
{
int x, y;
};
我创建了另一个结构,其中包含以下8种结构:
//Creating an Array of Array of structs
struct Arraypoint
{
point variable[8];
};
//Not sure if this is the correct way to do it.
现在,在main
,我想声明一个具有8个索引的Arraypoint
类型的数组变量,因此有效地,我将拥有8 * 8 = 64
结构point
元素和128
整数( 64
x和64
y)。
另外,如何从数组Arraypoint
访问单个元素结构点?
在main
声明之后可以说Arraypoint是2。
Arraypoint arr[2];
如何初始化元素而不必键入arr[0].variable[0].x = ...
或不使用for循环。 为什么我不能执行以下操作,但它似乎不起作用。
Arraypoint arr[2] = { {(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y)},
{(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y)} }//xy are rand
我在代码中使用了花括号,返回的错误是missing braces around initializer for type point
,而missing braces around initializer for type point
too many initializers for type Arraypoint
。
在C ++中,您只需编写:
Arraypoint arr[8];
然后可以通过以下方式访问单个点:
arr[i].variable[j];
不过,实际上,最好使用例如
std::vector<std::vector<point> >
或使用重载的operator(int i, int j)
编写自己的类。 例如:
class PointMatrix
{
private:
std::vector<point> m_points;
public:
PointMatrix() : m_points(64) {}
point& operator()(int i, int j) { return m_points[8 * i + j]; }
const point& operator()(int i, int j) const { return m_points[8 * i + j]; }
};
PointMatrix mat;
m(3, 4).x = 23;
struct Arraypoint arraypoints[8];
我想,这就是你所追求的。 要使用它们:
int firstx = arraypoints[0].variable[0].x;
虽然不是很漂亮
struct point { int x, y; };
struct point[8][8] arraypoints;
可能更好吗? 不知道你到底在追求什么。
要创建Arraypoints
数组,您可以执行以下操作:
Arraypoint arr[8];
要访问元素:
arr[i]
将返回第i
个Arraypoint元素
arr[i].variable[j]
将返回元素中的第j
个点
arr[i].variable[j].x
将返回该点的x
坐标。
知道了: ideone.com/ix3hC 。 Arraypoint::variable
必须具有自己的{ }
对。
struct point
{
int x, y;
};
#define P {0, 0}
struct Arraypoint
{
point variable[8];
};
#define V { P, P, P, P, P, P, P, P}
#define AP { V } //this is the pair you missed
int main() {
Arraypoint arr[2] = { AP, AP };
}
所以我意识到了为什么不能这样声明我的数组,
Arraypoint arr[2] = { {(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y)},
{(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y),(x,y)} }
//xy are randomn integer values
这是因为在我的Arraypoint的结构声明中,它接受了8个类型为point的元素。 所以我必须创建指向store(x,y)的point类型的变量,然后才能将此变量存储在Array point中。
point point1 = {x,y}, ...;
Arraypoint arr[2] = { {point1,point2,point3,point4,point5,....} };
只供将来遇到相同问题的人使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.