Я хочу написать операционный код матрицы C++, некоторые операции для некоторых функций одинаковы. Интересно, есть ли способ их слияния? Например:Как сгенерировать функцию 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;
}
}
}
Две части кода почти одинаковы. Как я могу избежать перезаписи в два раза? Есть ли что-то вроде шаблона, который может автоматически генерировать код?
Вы можете использовать 1D массив для хранения элементов матриц (сводится к 1 петле вместо 2 вложенных циклов), а затем использовать лямбды. –
Вы понимаете, что передаете 'm' по значению, не так ли? Это означает, что ваша функция сделает копию переданного вектора и не обновит его при возврате. – selbie
@selbie жаль, что не признаю это. Но моя проблема остается. – maple