2011-09-03 4 views
1

나는 Boost ublas 문서에 약간 당황 스럽다. 희소하고 밀도가 높은 매트릭스 클래스가 공통 상위 클래스를 공유한다는 것은 분명하지 않습니다. 그렇다면 operator() 접근자를 사용하여 행렬의 항목에 대해서만 연산이 필요하다고 가정하면 스파 스 또는 조밀 한 행렬을 허용 할 수있는 API를 어떻게 설계 할 수 있습니까? 예를 들면 다음과 같습니다.부스트 ublas 스파 스 또는 조밀 한 행렬을 처리하는 API

float doMatrixMath(matrix_base<float> m) 
{ 
    return m(1,1)+m(2,2); 
} 

아마도 내 생각은 잘못되었습니다. 모든 클래스에 대한 객체 모델링에 대해 생각하는 방법에 대한 안내는 감사하겠습니다!

답변

1

불행히도 템플릿. 당신은 매우 일반적인 유형을 사용하거나 파고 뭔가 더 구체적인를 찾을 수 있지만, 일반적인 생각은 할 수

이 좀 더 구체적인 종류와 반환 값 검출을 향상시킬 수 물론
template< typename MatrixType > 
float doMatrixMath(MatrixType m) 
{ 
    return m(1,1)+m(2,2); 
} 

...

+0

나는 그렇게 생각했다. 비록 m (1,1)을 호출 할 때 가상 메소드 디스패치를 ​​정말로 원하지 않는 방식으로 이것은 더 좋다. 타입 감지에 대한 요점을 상세히 설명해 주시겠습니까? –

관련 문제