c++ - 需要通过迭代器进行矩阵乘法的帮助
问题描述
所以我试图实现一个运算符重载,这将允许我将一个矩阵和一个向量相乘。矩阵本身就是向量的向量。我已经生成了通过使用 for 循环和简单的向量索引来实现这一点的代码,但是,我想尝试使用迭代器来实现它。
我的第一步是产生一个运算符重载,它允许我“乘”向量。从这个意义上说,乘法是逐行操作。所以对于两个向量 a = {a1,a2,a3} 和 b = {b1,b2,b3},a*b 的结果是 {a1b1, a2b2, a3b3}。这是按如下方式实施的:
template<typename T>
vector<double> operator*(const vector<T> &v1, const vector<T> &v2) //vector * vector [broken down matrix] Not dot product
{
vector<double> output(v2.size());
int pos = 0;
for(auto &row : v1){
for(auto &col : v2){
output[pos] = col*row;
}
pos++;
}
return output;
}
我的想法是为矩阵 * 向量的乘法实现几乎以下代码:
template<typename T>
vector<double> operator*(const vector<vector<T> > &v1, const vector<T> &v2) //matrix * vector
{
vector<double> output(v2.size());
int pos = 0;
for(auto &row : v1){
output[pos] = row*v2;
}
pos++;
return output;
}
我想我知道我的问题。row 不是向量,所以当我尝试做 row*v2 时,它没有意义,也没有使用向量 * 向量运算符重载。所以我的问题是,我怎样才能使迭代器对向量向量进行操作,从而允许所需的乘法属性。也许这种方法从根本上讲是有问题的,在这种情况下,我欢迎任何额外的帮助。谢谢
后续问题:如所见,这些是模板功能。有没有一种方法可以根据类型名 TIe 声明向量“输出”,以便当整数向量/矩阵传递到函数时,返回整数向量,而当双向量/矩阵传递到函数时,双向量被退回。
解决方案
推荐阅读
- python - 培训师班 CNTK 的问题
- type-conversion - VHDL 错误:中缀表达式中的类型不明确;reg_buff 或 data_buff
- nginx - Nginx 配置问题 - 无法从 NodeJS 测试程序连接到 S3 兼容存储
- c# - 我可以将第三个字段添加到 .NET ListItem 呈现的对象吗?
- c++ - 停止喷涂并保持原位
- java - 使 XSD 属性接受两种类型(xs:string 和 xs:long)的最优雅方法?
- node.js - 获取节点中特定时区的 UTC 偏移量和 DST 信息?
- vba - 访问 - VBA 无效使用 null
- ios - 无法取消选择 collectionView 中的项目
- gforth - 如何在 Forth 中构建素数生成器?