我正在处理这一小段代码,尽管它可以按我的预期工作,但是我需要对其进行优化。请给我建议一些想法。
这是我的代码的重要部分:
std::replace_if(inputImage,inputImage+ m_xDim*m_yDim*m_zDim, bind2nd(std::less<float>(), 0), 0); // replace the values <0 with 0 of array input
std::replace_if(inputImage,inputImage+ m_xDim*m_yDim*m_zDim, bind2nd(std::greater<float>(), 4095), 4095); // replace the values >4095 with 4095 of array input
如您所见,我将inputImage的值设置为[0,4095]。但是,很明显,这不是有效的代码,因为我可以运行一个循环,一次完成两个工作。但是,这变成了C样式而不是C++。
有没有一种方法可以使用 replace_if 并一次性完成两项操作。
最佳答案
float clip(float value) {
return std::min(std::max(0, value), 4096);
}
int size = m_xDim * m_yDim * m_zDim;
std::transform(inputImage, inputImage + size, inputImage, clip);
关于c++ - 有没有一种方法可以优化此代码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6940025/