专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 其他开发语言

matlab转c++的一段代码,需要动态插入数据的结构体怎么定义

发布时间:2011-06-30 07:24:32 文章来源:www.iduyao.cn 采编人员:星星草
matlab转c++的一段代码,需要动态插入数据的结构体如何定义?

i=0;
fi=0;
while i<MaxIter&&fi<MaxCorr     
    i=i+1;
    logs.corr(i)=fi;
    logs.obj(i,:)=func(u);    %func(u)返回一个1*3的数组
end

转换成C++代码时该如何定义logs结构体?

struct logs
{
    double corr[MaxIter];   //这样肯定不行
    double obj[MaxIter][3]; //同上
}

------解决方案--------------------
matlab的在struct上有点很明显,因为可以动态指定fields,名称,值都能动态添加.
c++不能这样.你在定义logs这个结构体的时候,需要事先声明需要大小的数组才行
3个办法:

1. 定义个一个常量MAX_ITER,常量的值你需要从matlab运行结果来观察,然后用他去定义log结构体中的数组;
2. log中定义成double *corr和double **obj,但是即使这样,在需要初始化log的时候,你仍然必须初始化这2个指针,这时候也需要max_iter这个值,所以2种办法其实是一样的.
3. 最后一种办法就是利用c++中的变长容器,vector或者list,你的结构体定义可能需要改变为:

struct logs
{
    double data[4]; // 1*4,data[0]是corr,data[2]-data[4]表示obj的1*3
}

然后在需要循环中你只需要不停的vector <logs>.push_back(new_logs)即可.
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: