2016-11-18 60 views
1

Eigen是一個很棒的代數/矩陣計算C++庫,我在開發項目中使用它。但是有人告訴我不要使用它,因爲它取決於標準容器,這對我來說是有疑問的。不使用標準容器的原因很複雜,我們現在只是忽略它。我的問題是,eigen的實現是否真的取決於標準容器?我在Eigen主頁上搜索過,但沒有找到。誰能幫我?Eigen的實現是否依賴於標準容器?

回答

2

我寧願說沒有,因爲只有兩個非常邊際使用:

第一個是在IncompleteCholesky其中std::vectorstd::list被用來計算期間舉辦一些臨時對象,而不是成員。該類僅在用戶明確使用它時使用。

第二個是SuperLUSupport模塊,它是支持第三個庫的模塊。再一次,你不能意外使用!

Avi提到的StlSupport模塊只是一個輔助模塊,用於簡化Eigen矩陣在STL容器中的存儲。

+0

非常感謝。我們不在項目中使用IncompleteCholesky和SuperLUSupport。所以你的回答真的幫助我!再次感謝。 –

2

是的,但很少。根據您的具體使用情況,您甚至可能不需要這些部件。你可以運行一個快速的grep來查看到底使用了哪些容器以及在哪裏。在3.3.0中,std::vector成員以及std::list<>::iterator中的./src/IterativeLinearSolvers/IncompleteCholesky.h,std::vector通常用作稀疏矩陣的輸入(SparseMatrix::setFromTriplets,雖然它確實需要迭代器)。

還有./src/StlSupport/目錄,但我不確定那就是你不想要的。

+0

是的,你的結論與@ggael類似。但是你已經教會了我一種有用的技能:使用'grep'來查找特定的類/庫的用法!謝謝! –

+0

@ WenwenKang如果ggael的回答最好的回答了你的問題,請考慮將其標記爲[accepted](http://stackoverflow.com/help/someone-answers)。 –