gpt4 book ai didi

c++ - 如何自动生成C++函数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:05 27 4
gpt4 key购买 nike

我想写一个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;
}
}
}

这两段代码几乎是一样的。如何避免重写两次?有没有类似模板的东西可以自动生成代码?

最佳答案

您可以定义一个函数模板,并将迭代元素的核心逻辑放在该函数中。

模板参数可以是仿函数,可用于定义每个特定调用发生的情况。

// Change m to be a reference so the modifications to the elements
// are visible in the calling function.

template <typename Functor>
void for_each_member(vector<vector<double> >& m, Functor functor)
{
for(std::size_t i = 0; i < m.size(); ++i){
for(std::size_t j = 0; j < m[i].size(); ++j){
functor(m[i][j]);
}
}
}

void add1(vector<vector<double> >& m){
for_each_member(m, [](double& item) { item += 1.0;});
}

void minus1(vector<vector<double> >& m){
for_each_member(m, [](double& item) { item -= 1.0;});
}

关于c++ - 如何自动生成C++函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37178324/

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