这个问题是关于结构数组的语法。
我有一个接受两个整数的结构:
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
我在我的代码中使用了大括号,返回的错误是类型点初始化器周围缺少大括号
和类型数组点初始化器过多
。
最佳答案
在 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;
关于c++ - 创建一个结构数组的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404895/