我想實現矩陣的表示。因爲我有兩種類型的矩陣 - 正則和稀疏,它們的實現有所不同 - 一種是向量,另一種是索引和值的映射,它們都繼承自Matrix
類。爲此,我使用策略模式,在此創建基本抽象類Matrix
,繼承自Matrix
- RegMatrix
和SparseMatrix
的兩個類和MyMatrix
,其中包含指向Matrix
的指針。接口方法的實現
我想要實現+
運營商,該運營商在Matrix
上運行,並收到另一個Matrix
。但是當我實現+
運算符時,可能會收到稀疏/常規矩陣參數。
所以我有2個問題:
我唯一的線索是創造型的迭代器「矩陣」,並實現每種類型的矩陣(經常和稀疏)的迭代器。 我該怎麼做這樣的事情?
比方說,我爲兩種類型的「矩陣」實現了一個迭代器。我怎樣才能使用不同的迭代器,以防我必須添加兩種不同類型的矩陣?我必須執行所有4種不同的情況嗎?
運營商+樣子:
Matrix& operator+(const Matrix& other)
{
.....
}
我不會用迭代器做到這一點,但是對於所有三種情況,都使用硬編碼類型檢查和單獨的代碼。如果你認真對待數值編程,不要全部面向對象,至少不要在你的內部循環中。 (儘管模板代碼可能足夠快。) – 2014-08-31 16:06:14
何時以及如何選擇使用哪種實現?這是整個問題的核心問題,並將決定OOP是否有用。 – 2014-08-31 16:15:37