Eigen::Map 未命名?
Eigen::Map unamed?
在这里,我尝试使用 Eigen
函数将随机值写入 a
:
double *a = (double*)malloc(N*N*sizeof(double));
Map<Matrix<double, N, N, RowMajor> >m(a);
m = MatrixXd::Random(N,N);
是否可以在一行中完成最后一部分(不创建 m
)?我在想象
Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);
但是得到了
main.cpp:44:42: error: redefinition of 'a' with a different type: 'Map<Matrix<double, N, N, RowMajor> >' vs 'double *'
Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);
^
main.cpp:42:13: note: previous definition is here
double *a = (double*)malloc(N*N*sizeof(double));
^
1 error generated.
C++ 将忽略 a
周围的 ()
结构,如
Type (a) = expr;
你可以写
( Type(a) ) = expr;
或使用 C++11:
Type{a} = expr;
对于这种情况,您还可以使用静态 Map
成员函数:
Matrix<double, N, N, RowMajor>::Map(a) = MatrixXd::Random(N,N);
或
Matrix<double, N, N, RowMajor>::Map(a).setRandom(); // size is specified by type
在这里,我尝试使用 Eigen
函数将随机值写入 a
:
double *a = (double*)malloc(N*N*sizeof(double));
Map<Matrix<double, N, N, RowMajor> >m(a);
m = MatrixXd::Random(N,N);
是否可以在一行中完成最后一部分(不创建 m
)?我在想象
Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);
但是得到了
main.cpp:44:42: error: redefinition of 'a' with a different type: 'Map<Matrix<double, N, N, RowMajor> >' vs 'double *'
Map<Matrix<double, N, N, RowMajor> >(a) = MatrixXd::Random(N,N);
^
main.cpp:42:13: note: previous definition is here
double *a = (double*)malloc(N*N*sizeof(double));
^
1 error generated.
C++ 将忽略 a
周围的 ()
结构,如
Type (a) = expr;
你可以写
( Type(a) ) = expr;
或使用 C++11:
Type{a} = expr;
对于这种情况,您还可以使用静态 Map
成员函数:
Matrix<double, N, N, RowMajor>::Map(a) = MatrixXd::Random(N,N);
或
Matrix<double, N, N, RowMajor>::Map(a).setRandom(); // size is specified by type