c++ - Valarray 切片数组与 'operator*' 不匹配
问题描述
我正在尝试使用两个 valarray 进行多维点积,即返回一个 valarray,使得每个元素都是输入 valarray 的两行上的点积。
我使用切片按数组划分为行。检查文档,它指出 * 是 slice_array 的运算符,我相信我的工作方式类似于 * 到 valarrays。它在两个数组之间执行元素乘法。
valarray<float> mult(valarray<float> arr1, valarray<float> arr2, int row1, int mid, int col2)
{
valarray<float> new_arr;
new_arr.resize(row1*col2);
for (int i = 0; i < row1*col2; ++i)
{
slice s (i*mid,mid,1);
new_arr[i] = (arr1[s] * arr2[s]).sum();
}
return new_arr;
}
我不断收到的错误是:
|12|error: no match for 'operator*' (operand types are 'std::slice_array<float>' and 'std::slice_array<float>')|
我不确定我做错了什么。在我制作自己的元素乘法函数之前,代码或我对 slice_array 的使用是否有任何错误?
解决方案
文档slice_array
说接口是
template <class T> class slice_array {
public:
/* Skipped for brevity */
void operator*= (const valarray<T>&) const;
};
换句话说,您可以将切片乘以 a valaray
,但它没有说明将两个切片相乘。
推荐阅读
- jenkins - 在哪里可以在我的 ubuntu 机器中找到新的重置密码路径?
- variables - 如何在 ABB codesys 中存储负值
- javascript - Next.js 和 Express.js,只为网页运行认证中间件
- python - 预期的二维数组,得到了标量数组:
- python - asyncio 错误 = rs.append(await session.get(urls)) RuntimeError: Task got bad yield:
- java - Springboot中如何配置@Transactional对Redis的支持?
- javascript - CSS 和 Material UI - 如何让表格内容只向下扩展 || 如何设置容器顶部的固定位置
- php - Laravel 碳的使用
- wordpress - Wordpress 主题编辑文件权限问题
- python - 在python中为随机选择的选项分配一个值