나는이 작은 조각의 코드에서 작업하고 있지만 예상대로 작동하지만 최적화해야합니다. 나에게 몇 가지 아이디어를 제안 해주세요.이 코드를 최적화 할 수있는 방법이 있습니까?
여기 내 코드의 중요한 부분입니다 :
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을 사용하여 한 번에 두 가지 작업을 수행 할 수 있습니까? 당신이 최적화해야하는 경우
을
transform
을 사용할 수 있으며, "모양 ++ C"는 주장은 더 이상 없습니다. – moala@ 모아라 : 완전히 동의하지 않습니다. 추한 원시 반복자 코드가 필요하기 때문에 최적화 할 필요가 없습니다. C++ 스타일은 스스로 할 수있는 것보다 훨씬 더 최적화 될 가능성이 매우 높습니다. 이는 올바른 도구를 선택하는 문제입니다 (답변에 잘 표시되어 있음). – KillianDS
@KillianDS : 각 작업에 대한 도구가 없으며 때로는 자신 만의 작업 전용 도구를 만들어야합니다. – moala