Pou*_*sen 0 c++ arguments eigen
我写过这个从文本文件中读取一些数字的小解析器.
data.resize(7,datapoints); //Eigen::Matrix<float,7,-1> & data
dst = data.data();
while( fgets(buf,255,fp) != 0 && i/7 < datapoints)
{
int n = sscanf(buf,"%f \t%f \t%f \t%f \t%f \t%f \t%f",dst+i++, dst+i++,dst+i++,dst+i++,dst+i++,dst+i++,dst+i++);
i = i - 7 * (n<=0);
}
fclose(fp);
return !(datapoints == i/7);
Run Code Online (Sandbox Code Playgroud)
问题是,当我对数据执行std :: cout时,它会翻转.
数据在:
0 4 0.35763609 0.64077979 0 0 1
0 4 0.36267641 0.68243247 1 0 2
0 4 0.37477320 0.72945964 2 1 3
Run Code Online (Sandbox Code Playgroud)
data.col(3)是
0.64077979
0.68243247
0.72945964
Run Code Online (Sandbox Code Playgroud)
和data.col(4)是
0.35763609
0.36267641
0.37477320
Run Code Online (Sandbox Code Playgroud)
我无法看到为什么它将数据水平翻转的逻辑?
为了说明问题:
#include <cstdio>
void f(int i, int j, int k)
{
printf("i = %d\tj = %d\tk = %d\n", i, j, k);
}
int main()
{
int i=0;
f(i++, i++, i++);
}
Run Code Online (Sandbox Code Playgroud)
执行此操作,返回此处(关于Cygwin的g ++ 4.3.4):
i = 2 j = 1 k = 0
Run Code Online (Sandbox Code Playgroud)
i++函数调用内部调用的执行顺序完全是实现定义的(即任意).
| 归档时间: |
|
| 查看次数: |
119 次 |
| 最近记录: |