gpt4 book ai didi

c++ - 是否可以将矩阵与初始化列表相乘?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:35 25 4
gpt4 key购买 nike

我正在尝试制作一个数学库,并且想知道是否可以直接将矩阵乘以未初始化的列表而不是先将其包装在 vector 中。

我想得到这样的东西。

 Matrix<double> M = {{1, 1}, {2, 2}};
vector<double> v = M * {2.0, 2.0};

矩阵初始化工作得很好。所以矩阵 M 是一个 2x2 矩阵。我想将此 M 乘以 vector {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;
}

最佳答案

应该使用初始化程序进行初始化。我不认为这是不可能的,但有一些解决方法:

vector<T> Matrix<T>::operator*(std::initializer_list<double> a)
{
....
}

auto v = M * std::initializer_list<double>{2.0, 2.0};
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// Make an initialized object

但是它不够合适且可读性不够。我更喜欢下面的代码:

auto v = M * Matrix<double>{2.0, 2.0};
^^^^^^^^^^^^^^^^^^^^^^^^^
// Initialized Matrix

关于c++ - 是否可以将矩阵与初始化列表相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877842/

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