문제

벡터 또는 목록과 같은 차수 컨테이너에서 요소의 도트 제품을 구현하기 위해 C ++ STL 일반 알고리즘을 사용하는 영리한 원 라이너가 확실합니다. 나는 그것을 기억하지 않는 것 같다!

멋진 구현은 다음과 같습니다.

template <class containerT>
typename containerT::value_type dot_product (const containerT& left, const containerT& right)
{
   assert(left.size()==right.size());
   containerT::value_type result = 0;
   for (containerT::const_iterator l_it = left.begin(), r_it = right.begin();
        l_it != left.end(); ++r_it,++l_it)
   {
      result += (*l_it) * (*r_it);
   }
   return result; 
}

나는 바퀴를 재창조 하고이 작업을 수행하는 더 영리한 방법이 있다고 생각합니다.

도움이 되었습니까?

해결책

보다 std::inner_product ~에서 <numeric>.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top