我在c ++中遇到了矢量问题.我是c ++的新手,所以请记住这一点.
所以我在我的程序开始时有以下结构:
typedef struct grupo
{
float transX, transY, transZ, rotX, rotY, rotZ, rotAngle, scaleX, scaleY, scaleZ;
char **modelos;
struct grupo** grupos;
int nNomes = 0, nGrupos=0;
std::vector<float> vertices;
};
struct grupo *grupo;
Run Code Online (Sandbox Code Playgroud)
而我只是这样开始主要:
grupo = (struct grupo*)malloc(sizeof(struct grupo));
grupo->modelos = (char **)malloc(sizeof(1));
grupo->grupos = (struct grupo **)malloc(sizeof(struct grupo));
Run Code Online (Sandbox Code Playgroud)
在主要的中间我试图使用这个:
grupo->vertices.push_back(x);
Run Code Online (Sandbox Code Playgroud)
但它一直在破坏程序.我正在使用visual studio,并使用调试模式.我可以看到将X推送到崩溃的向量时(x有一个值).我试图将矢量更改为浮点数组.所以我能想象的问题是矢量的初始化......你能帮我解决一下我错过了什么吗?
谢谢 :)
我想知道如何最大化我可以在CPU上运行的操作数量.我正在做一个简单的矩阵乘法程序,我有一个Skylake处理器.我正在查看维基百科页面上关于这个架构的翻牌信息,我很难理解它.
根据我的理解,FMA指令允许3路FP输入吗?并允许在它们之间的加法和乘法之间进行混合.但是当我只添加两个花车时会发生什么?它只是乘以一个吗?我可以在1个周期中添加3个浮点数,还是会拆分?我看到skylake,有32个FLOP /周期用于单精度输入,但是" 两个8宽FMA指令 " 的含义是什么?
提前感谢您的解释