【发布时间】:2016-09-07 18:44:20
【问题描述】:
我想写一个c++矩阵运算代码,某些函数的某些操作是一样的。我想知道是否有一些方法可以合并它们?例如:
void add1(vector<vector<double> > &m){
for(int i = 0; i < m.size(); ++i){
for(int j = 0; j < m[i].size(); ++j){
m[i][j] += 1.0;
}
}
}
void minus1(vector<vector<double> > &m){
for(int i = 0; i < m.size(); ++i){
for(int j = 0; j < m[i].size(); ++j){
m[i][j] -= 1.0;
}
}
}
这两段代码几乎是一样的。如何避免重写两次?有没有模板之类的东西可以自动生成代码?
【问题讨论】:
-
您可以使用一维数组来存储矩阵的元素(减少到 1 个循环而不是 2 个嵌套循环),然后使用 lambda。
-
您意识到您正在通过值传递
m,对吗?这意味着您的函数将复制传入的向量,并且不会在返回时对其进行更新。 -
@selbie 很抱歉没有意识到这一点。但我的问题仍然存在。
-
您正在尝试使用 C++ 语法和 C++ 容器编写 C 代码
标签: c++ templates generics code-generation