您可以定义一个函数模板,并将迭代的核心逻辑放在该函数中的元素上.
template参数可以是functor,可用于定义每个特定调用的内容.
// Change m to be a reference so the modifications to the elements
// are visible in the calling function.
template
void for_each_member(vector >& 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 >& m){
for_each_member(m, [](double& item) { item += 1.0;});
}
void minus1(vector >& m){
for_each_member(m, [](double& item) { item -= 1.0;});
}