在代碼:廣東話可用內存
template<class T,int row, int col>
void invert(T (&a)[row][col])
{
T* columns = new T[col * row];
T* const free_me = columns;
T** addresses = new T*[col * row];
T** const free_me_1 = addresses;
/*cpy addresses*/
for (int i = 0; i < row; ++i)
{
for (int j = 0; j < col; ++j)
{
*addresses = &a[i][j];
++addresses;
}
}
addresses = free_me_1;
/*cpy every column*/
for (int i = 0; i < col; ++i)
{
for (int j = 0; j < row; ++j)
{
*columns = a[j][i];
++columns;
}
}
columns = free_me;
/*cpy from columns to addresses*/
for (int i = 0; i < (col * row); ++i)
{
*addresses[i] = columns[i];
}
delete[] free_me_1;
delete[] free_me;
}
我觀察到,儘管迭代,變量列的值爲零,我認爲這就是問題。
感謝您的幫助。
P.S.我粘貼了這個fnc的最終版本。它現在按預期工作。感謝大家的寶貴幫助。
你是怎麼調用這個函數的? – 2010-04-02 09:48:59
嗨,尼爾,我給我的帖子添加了對我的fnc的電話。 – 2010-04-02 09:50:20
您可能想要通過引用來獲取數組,以便可以自動且正確地推導出所有模板參數:'T(&a)[row] [col]' - 否則您必須至少指定參數T和行,我認爲。 – sellibitze 2010-04-02 09:56:22