我有一個cholmod_dense數據結構:索引到CHOLMOD緻密矢量陣列
cholmod_dense* ex = cholmod_l_solve(CHOLMOD_A, L, B, &com);
和我要提取的值,並將它們複製到另一個變量。這意味着我需要索引到雙數組並複製值。
for (int k=0; k<ncols; k++) T_x[k]=((double*)ex->x)[k];
哪個編譯器可以,但我得到一個分段錯誤。或者,我想我應該能夠做到:
double* e_x =(double*)ex->x;
for (int k=0; k<ncols; k++) T_x[k]=*e_x[k];
但是,編譯器真的不喜歡這樣的:
error: invalid type argument of unary ‘*’ (have ‘double’)
for (int k=0; k<ncols; k++) T_x[k]= *e_x[k];
根據CHOLMOD userguide:
- cholmod dense:密集矩陣,無論是實數,複數還是zomplex,按列主序排列。這與C中使用的行主約定不同。稠密矩陣X包含 •X-> x,這是一個尺寸爲X> nzmax的雙數組,或者是複數情況的兩倍。 •X-> z,如果X是zomplex,則是一個尺寸爲X-> nzmax的雙數組。
所以我應該能夠簡單地抓取EX-> x和指數成其爲雙陣列,但沒有得到一個分段錯誤,我不能這樣做。誰能幫我嗎?
CHOLMOD庫是用C編寫的,鏈接到CHOLMOD庫(上面顯示的代碼片段)的代碼是C++。
哪種語言,C **或** C++,因爲它們是兩種不同的語言?例如,C++有'std :: vector'和'std :: array',其中可以有一個向量數組。 C語言只有固定大小的數組。另外,C++語言有'static_cast <>'。 –
請編輯您的文章與編譯器的「不喜歡」文本。 –
什麼是'ncols'? – Alex