簡體   English   中英

使用Eigen動態類型進行統一初始化

[英]Uniform initialization with Eigen dynamic types

我正在嘗試學習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]));

還有哪些其他初始化方法?

對於固定大小的矩陣/向量,可以使用逗號初始值設定項:

Matrix3f m;
m<<1,2,3,4,5,6,7,8,9;

我目前無法對其進行測試,但是對於您的情況,它應該具有類似的功能:

VectorXi x(5);
x << 2,3,1,4,5;

如果沒有,則可以使用一個臨時Vector,使用逗號初始化程序將其填充五個元素,然后將其分配給VectorXi。

編輯:您可能也對此頁面感興趣: 特征:高級初始化

通過顯示的代碼,您可以編寫const項目。 所以也許你可以做類似的事情

std::vector<int> vec;
const int init_vec[5] =  {1,2,3,4,5}
vec.assign(init_vec, init_vec + 5);

有關如何使用數組填充向量的信息 ,請參見這篇文章

編輯:更正錯誤的鏈接格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM