c++ - 创建一个结构数组的数组?

标签 c++ arrays syntax struct

这个问题是关于结构数组的语法。

我有一个接受两个整数的结构:

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 结构 point128 整数(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/

相关文章:

将特定数组元素与 C 中具有 "if"的字符串进行比较?

c++ - 将OpenCV图像格式改为matlab格式,调试断言__acrt_first_block == header

C++11:我可以创建一个字段,其类型具有已删除的析构函数吗?

c++ - 使用 boost::iterator_facade<>

ruby - ` (a ||= []) << 1 ` 与 ` (i ||= 0) += 1 `

python - 正确的 Python 语法和语义 : if, 否则,通过

html - 语法题: What is right to do?

c++ - 包括 boost/asio.hpp 抛出错误

java - 如何在 Java 中将已排序数组重置为未排序数组?

java - 显示二维数组的最低值和最高值