对结构数组使用构造函数
Using a constructor for an array of structures
我想创建一个结构数组。该结构使用如下所示的构造函数:
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中稍后调用构造函数。有没有一种好的或首选的方法来做到这一点?谢谢
您可以执行std::vector<struct_seedinfo>
。这将创建一个数组,并在需要时自动增加大小。
您还需要重载结构的复制构造函数和复制赋值运算符,以便能够在向量中使用。你也需要一个析构函数。这被称为C++中的三规则
由于大小保持不变,您可以使用以下解决方案:*这假设您可以定义默认构造函数。
首先在类中声明一个默认构造函数。
struct_seedinfo(){
//If you want to initlaize something.
}
然后你可以使用以下创建你的阵列:
struct_seedinfo * arr = new struct_seedinfo[size_of_array];
然后你需要为每个空间做你的特定构建:
arr[i] = struct_seedinfo(//arguments);
这是如果你非常需要一个数组,我也认为向量解决方案更好。
相关文章:
- 在字符数组维度分析中构造字符数组
- 第 i 个元素返回 i 的函数数组
- 使用嵌套函数数组是个好主意吗?
- 正确实现类函数数组
- 试图引用已删除函数数组的相等运算符
- 如何在静态函数中使用成员函数数组
- 尝试使用 Array 类的模板构造整数数组时,错误:为什么数组类型"int [5]"不可分配,
- 无法创建函数数组
- 构造函数数组
- 使用开关或定义函数数组 - 更快
- 如何使用构造函数的参数构造成员数组的每个元素
- 编写一个函数,该函数将覆盖主函数数组中的值
- 函数,该函数动态构造字节数组并返回长度
- 可以像'funs[1]();'一样调用的函数数组
- std::AVX内部函数数组
- 如果数组大小未知,如何将函数数组作为参数传递
- 从函数数组中获取值
- 使用元编程在编译时初始化函数数组
- 复制构造函数 [数组] C++
- 深层复制构造函数数组类