[英]Map from std::vector<unsigned> to Eigen::VectorXi
有沒有一種方法可以按照以下方式將std::vector<unsigned>
直接映射到Eigen::VectorXi
?
std::vector<unsigned> a = {1,2,3,4,5};
Eigen::VectorXi c = Eigen::VectorXi::Map(a.data(), a.size());
我想在這兩個步驟之間跳過以下步驟:
std::vector<int> b(a.begin(),a.end());
你的線
Eigen::VectorXi c = Eigen::VectorXi::Map(a.data(), a.size());
不會“直接將std::vector<unsigned>
映射到Eigen::VectorXi
”,而是將數據復制到新的Eigen::VectorXi
。 如果要使用Eigen功能包裝現有數據數組,則應使用以下方法:
Eigen::Map<Eigen::VectorXi> wrappedData(a.data(), a.size());
然后,您可以使用使用wrappedData
就像任何其他VectorXi
與調整基礎數據的異常(即仍然由國有std::vector
)。 有關更多詳細信息,請參見文檔 。
如果您試圖避免將數據復制到std::vector<int>
則可以使用“自定義”矩陣類型,即
typedef Eigen::Matrix<unsigned int, Eigen::Dynamic, 1> VectorXui;
Eigen::Map<VectorXui> wrappedData(a.data(), a.size());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.