gpt4 book ai didi

c++ - 模板参数是否可以进行矩阵乘法

转载 作者:行者123 更新时间:2023-11-30 01:41:41 25 4
gpt4 key购买 nike

让我定义一个矩阵类如下

template<typename T, size_t rowSize, size_t colSize>
class Matrix
{
//Class implementation
};

现在如果我有 2 个矩阵定义为

Matrix<double,3,2> A;
Matrix<double,2,5> B;
A*B;

乘法可以完成吗,如果我尝试它会说没有参数可以将 rhs 作为 double,2,5 for *。是否可以将模板概括为将 'double,x,y' 和 'double,y,z' 相乘并返回一个新矩阵 'double,x,y'

最佳答案

template<typename T, size_t rowSize, size_t colSize>
class Matrix
{
// Implementation
};

template<
typename T,
typename U,
size_t rowSize1,
size_t commonSize,
size_t colSize2
>
auto operator * (Matrix<T, rowSize1,commonSize> const & a,
Matrix<U, commonSize,colSize2> const & b)
-> Matrix<decltype(std::declval<T>()*std::declval<U>()), rowSize1, colSize2>
{
// Implementation
}

int main()
{
Matrix<double,3,2> A;
Matrix<double,2,5> B;
auto C = A*B;
}

或作为成员(member):

template<typename T, size_t rowSize, size_t colSize>
class Matrix
{
public:
template<typename U, size_t colSize2>
auto operator * (Matrix<U, colSize,colSize2> const & b)
-> Matrix<decltype(std::declval<T>()*std::declval<U>()), rowSize, colSize2>
{
// Implementation
}

};

关于c++ - 模板参数是否可以进行矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com