我正在將一些函數從Matlab轉換爲C++,並且還有一些與矩陣有關的事情。我的地方在互聯網上發現了這個簡單的功能:C++ - 爲什麼`const類型和變量`作爲函數輸入?
typedef std::vector<std::vector<double> > Matrix;
Matrix sum(const Matrix& a, const Matrix& b) {
size_t nrows = a.size();
size_t ncols = a[0].size();
Matrix c(nrows, std::vector<double>(ncols));
for (int i = 0; i < nrows; ++i) {
for (int j = 0; j < ncols; ++j) {
c[i][j] = a[i][j] + b[i][j];
}
}
return c;
}
任何人都可以解釋我爲什麼他們用const Matrix& a
作爲輸入,而不是Matrix a
?他們是否習慣使用它,或者是否有任何使用它的好處,因爲我沒有看到2個版本(const Matrix& a
和Matrix a
作爲輸入)的結果之間的差異。
通過參考,而不是通過價值,你避免對象複製。通過添加const你保證調用者這個函數不會改變任何東西。 – PSIAlt
離線主題:'std :: vector>'是製作矩陣的最簡單方法之一。這是最安全的之一。它也可以是最慢的一個。如果你想要表現,那麼除了靜態數組之外,還要考慮製作2D任何東西。在這裏找到更好的方式來寫好:https://isocpp.org/wiki/faq/operator-overloading#matrix-subscript-op –
user4581301
@ user4581301你有任何建議或(似是而非的)參考2D矩陣(除了isocpp)? – scmg