0
我只是偶然發現了一個動態特徵矩陣的問題。我必須從C數組創建這個數組。 Eigen提供Eigen :: Map與原始緩衝區接口。我想從下面的函數返回一個特徵矩陣:如何返回一個動態特徵矩陣
Eigen::Map<Eigen::Matrix<double, 1, Eigen::Dynamic> returnArray() {
double array[4] = {0, 1, 2, 3};
Eigen::Map<Eigen::Matrix<double, 1, Eigen::Dynamic, Eigen::RowMajor> > J_full(array, 1, 4); // the sizes aren't actually known at compile time hence the dynamic array
return J_full
}
我的問題是,在陣列中的數據不只是抄襲,但指針數組傳遞到地圖構造函數。現在我假設一旦我退出這個函數的範圍,C數組就會被破壞,因此從函數返回的特徵矩陣I中將不會有任何可靠的數據。有沒有什麼辦法可以從數組中創建一個特徵矩陣,以便在返回時保留特徵矩陣的數據?
你能解釋爲什麼這個工程?誰決定是否有深度拷貝。在我的例子中,如果我添加行數組[0] = 10;在Map <>構造函數之後,它會更改J_full的內容。 (本徵數組的std :: cout產生10 1 2 3)。在你的例子中,如何執行深度拷貝? –
這很簡單,'Matrix' **總是**擁有它的內存,而'Map'永遠不會。 – ggael