armadillo 库在编译的时候依赖C++11,VS2022默认已经支持的C++14,但C++14默认不支持<<运算符初始化mat矩阵,C++14以上的标准也会报错,都不支持这种方式了。
所以解决这个问题两个思路:
- 安装支持C++11版本的vs
- 修改不支持的语法
第一个解决办法不需要说,安装编译就行。第二个语法如果能看懂错误提示,其实也很容易,就用是{}的形式初始化mat代替<<操作符。
double dd = 0.;
mat a = {dd};
a = colvec({dd});
vec X;
X<<1<<endr<<0<<endr<<0<<endr;
X = {{1}, {0}, {0}};
mat tilde(3,3);
tilde<<0.<<-z<<y<<endr<<z<<0.<<-x<<endr<<-y<<x<<0.<<endr;tilde = {{0., -z, y}, {z, 0., -x}, {-y, x, 0.}};
或者可以用
tilde = rama::colvec({{0., -z, y}, {z, 0., -x}, {-y, x, 0.}});
参考文章: