簡體   English   中英

從std :: vector映射 <unsigned> 到Eigen :: VectorXi

[英]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.

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