0

我想创建一个结构数组。该结构使用如下所示的构造函数:

struct struct_seedinfo {
    struct_seedinfo(const mxArray *prhs[ ],const int seed_id){  
        mxArray *mat_coords, *mat_defvectorinit, *mat_corrcoef, *mat_roi_id;

        mat_coords = mxGetField(prhs[1],seed_id,"coords");
        coords = mxGetPr(mat_coords);

        mat_defvectorinit = mxGetField(prhs[1],seed_id,"defvectorinit");
        defvectorinit = mxGetPr(mat_defvectorinit);

        mat_corrcoef = mxGetField(prhs[1],seed_id,"corrcoef");
        corrcoef = *(mxGetPr(mat_corrcoef));

        mat_roi_id = mxGetField(prhs[1],seed_id,"roi_id");
        roi_id = *(mxGetPr(mat_roi_id));
    }
    double *coords;
    double *defvectorinit;
    double corrcoef;
    double roi_id;
    static int num_seeds;
};

如何创建此结构的任意大小的数组?我需要为其分配内存,但似乎我需要在不调用构造函数的情况下分配内存,然后稍后在 forloop 中调用构造函数。有没有一种好的或首选的方法来做到这一点?谢谢。

4

2 回答 2

2

你可以做到std::vector<struct_seedinfo>。这将创建一个数组,并在需要时自动增加大小。

您还需要重载复制构造函数和复制赋值运算符,以便您的结构能够在向量中使用。你也需要一个析构函数。这被称为C++ 中的三法则

于 2012-09-14T17:03:58.063 回答
1

好吧,由于大小保持不变,您可以使用以下解决方案: *这假设您可以定义默认构造函数。

首先在你的类中声明一个默认构造函数。

struct_seedinfo(){
//If you want to initlaize something.
}

比你可以使用以下来创建你的数组:

 struct_seedinfo * arr = new struct_seedinfo[size_of_array];

然后您需要为每个空间进行特定的构建:

arr[i] = struct_seedinfo(//arguments);

如果你非常需要一个数组,我也认为向量解决方案更好。

于 2012-09-14T17:45:45.897 回答