我正在尝试制作一个数学库,并且想知道是否可以立即将矩阵乘以 uninitialised_list 而不是首先将其包装在向量中。
我想得到这样的东西。
Matrix<double> M = {{1, 1}, {2, 2}};
vector<double> v = M * {2.0, 2.0};
矩阵初始化工作得很好。所以矩阵 M 是一个 2x2 矩阵。我想将此 M 乘以向量 {2.0, 2.0} 但是我得到了跟随错误。
error: expected primary-expression before '{' token
vector<double> v = M * {2.0, 2.0};
我的问题是这在 C++ 中真的可行吗?
我的重载运算符 * 将接受一个 initializer_list 如下。
template<typename T>
vector<T> Matrix<T>::operator*(const initializer_list<T> &list)
{
vector<T> result(list.size(), 0.0);
for (size_t i = 0; i < d_rows; ++i)
{
for (size_t j = 0; j < d_cols; ++j)
{
result[i] = d_matrix[i][j] * *(list + j);
}
}
return result;
}