我正在爲我的項目編寫一個簡單的界面,介於std::vector
和特徵之間。對於簡單的矩陣 - 矩陣乘法碼:獲取特徵矩陣元素類型的好方法
template<typename MatrixElementType1, typename MatrixElementType2>
inline auto _matmat(const vector<MatrixElementType1>& Mat1,
const vector<MatrixElementType2>& Mat2,
const size_t M, const size_t N, const size_t K)
{
using MatrixType1 = Matrix<MatrixElementType1, Dynamic, Dynamic>;
using MatrixType2 = Matrix<MatrixElementType2, Dynamic, Dynamic>;
Map<const MatrixType1> m1(Mat1.data(), M, N);
Map<const MatrixType2> m2(Mat2.data(), N, K);
auto rst = m1 * m2;
return vector<???>(rst.data(), rst.data() + rst.size());
}
問題是我應該用什麼? ..我知道decltype(rst(0,0))
作品,但是有更加優雅的方式嗎?這似乎爲decltype(rst)::value_type
本徵矩陣不工作..
使用'auto' near表達式模板?你喜歡住危險... –
這將是完美的,如果我可以決定哪些類型以使用簡單地基於'MatrixElementType1'和'MatrixElementType2' ..但我不知道該怎麼做 –
事實證明,我必須執行如果'MatrixElementType1'不等於'MatrixElementType2',但問題仍然存在,乘以矩陣前投:我應該投'Mat1'到'MatrixElementType2'或者我應該投'Mat2'到'MatrixElementType1' .. –