我正在尝试学习Eigen C ++库,并想知道是否有一些很好的简写来初始化动态矢量和矩阵。写一些像你使用std::vector
std::vector<int> myVec = {1,2,3,6,5,4,6};
即
VectorXi x = {1,2,3,4,7,5,7};
我能找到的最接近(丑陋)的等价物涉及Map
。 。
int xc[] = {2,3,1,4,5};
Map<VectorXi> x(xc,sizeof(xc)/sizeof(xc[0]));
还有哪些其他初始化方法?
答案 0 :(得分:1)
对于固定大小的矩阵/向量,您可以使用逗号初始值设定项:
Matrix3f m;
m<<1,2,3,4,5,6,7,8,9;
我现在无法测试它,但它应该适用于您的情况:
VectorXi x(5);
x << 2,3,1,4,5;
如果没有,您可以使用临时Vector,使用逗号初始化程序将其填充五个元素,然后将其分配给VectorXi。
编辑: 您可能也对此页面感兴趣:Eigen: Advanced Initialization
答案 1 :(得分:1)
通过您展示的代码,您可以编写const项目。所以也许你可以做类似
的事情std::vector<int> vec;
const int init_vec[5] = {1,2,3,4,5}
vec.assign(init_vec, init_vec + 5);
请参阅this post如何使用数组填充向量。
编辑:纠正错误的链接格式化。