这个问题是关于结构数组数组的语法。
我有一个包含两个整数的结构:
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
中,我想要声明一个类型为Arraypoint
的数组变量,其中包含8个索引,因此我将有8 * 8 = 64
个结构point
元素和{ {1}}整数(128
x和64
y)。
另外,我如何从数组64
访问单个元素结构点?
好的,在Arraypoint
中声明之后,让我们说Arraypoint是2。
main
如何初始化元素而无需键入Arraypoint arr[2];
或不使用for循环。
为什么我不能做以下事情,它似乎不起作用。
arr[0].variable[0].x = ...
我在代码中使用过花括号,返回的错误是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
。
答案 0 :(得分:4)
在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;
答案 1 :(得分:1)
struct Arraypoint arraypoints[8];
我想,是你所追求的。使用它们:
int firstx = arraypoints[0].variable[0].x;
虽然不是那么漂亮
struct point { int x, y; };
struct point[8][8] arraypoints;
可能更好吗?不知道你究竟在追求什么。
答案 2 :(得分:1)
要创建Arraypoints
数组,您可以执行以下操作:
Arraypoint arr[8];
访问元素:
arr[i]
将返回i
'Arraypoint元素
arr[i].variable[j]
将返回元素
中的j
'点
arr[i].variable[j].x
将返回该点的x
坐标。
答案 3 :(得分:1)
得到它: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 };
}
答案 4 :(得分:0)
所以我意识到为什么我不能这样声明我的数组,
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的struct声明中,它接受了8个point类型的元素。所以 我必须创建point to store(x,y)类型的变量,然后我可以将这个变量存储在Array点。
point point1 = {x,y}, ...;
Arraypoint arr[2] = { {point1,point2,point3,point4,point5,....} };
仅适用于将来遇到同样问题的任何人。