我正在爲Hermitian matrices寫一個類。這是一個複雜的矩陣,它只有n*(n+1)/2
獨立的複數(忽略對角線的細節完全是真實的)。C++:代理設置/獲取數組值與複合共軛
我的計劃是隻寫上三角形的元素,其中行號與列號相比滿足條件滿足條件:row >= column
。但是,這需要像代理一樣?我不知道如何實現這一點。問題如下:
說我執行成員函數at(int row, int column)
來訪問一個元素。
template<typename T>
std::complex<T>& HermitianMatrix<T>::at(long row, long column)
{
if(row >= column)
return this->_matrix[ElementIndex(row,column)];
else
return std::conj(this->_matrix[ElementIndex(column,row)]);
}
其中ElementIndex
的row
column
和輸入轉換到陣列std::complex<T>* _matrix = new std::complex<T>(...)
在的位置。當然,這個方法返回一個引用。上面看到的代碼對於矩陣的下三角部分不起作用,因爲參考在返回後消失了。
什麼是正確和最有效的方式來實現這一點,使我有某種「管道」的下三角矩陣部分總是經過std::conj
爲設置和獲得?
如有需要,請索取更多信息。謝謝。
if中的塊應該是'ElementIndex(column,row)',不應該嗎? – Holt
@Holt是的。我修好了它。謝謝。 –