위대한 매트릭스 서브 모듈 덕분에 Dlib을 사용하고 있습니다. 빠른 과학 알고리즘을 사용하는 것이 매우 완전하고 유용하다는 것을 알았습니다. 일부 사용자 지정 작업을 추가하고 어떻게 작동하는지 전반적인 아이디어를 얻을 수있었습니다.dlib의 matrix_exp를 std :: vector에 할당 할 수없는 이유는 무엇입니까?
그러나 꽤 오랜 시간 이후로 나를 귀찮게하는 질문이 있습니다. 어떤 종류의 행렬 표현식을 std::vector
에 할당하는 것이 불가능 해 보이는 특별한 이유가 있습니까?
편집 : 여기
전형적인 dlib 기능입니다 :template <typename EXP>
const matrix_op<op_trans<EXP> > trans(const matrix_exp<EXP>& m) {
typedef op_trans<EXP> op;
return matrix_op<op>(op(m.ref());
}
내가 걸리는 대신 std::vector
을 반환 해당 기능을 구현하려면, 내가 할 것이라고 생각 :
template <typename EXP>
const std::vector<matrix_op<op_trans<EXP> > > trans(const std::vector<matrix_exp<EXP> >& ms) {
std::vector<matrix_op<op_trans<EXP> > > out(ms.size());
typedef op_resize_bilinear<EXP> op;
for (int i = 0; i < ms.size(); ++i)
out[i] = matrix_op<op>(op(ms.ref()));
return out;
}
그러나이 표현식은 matrix_exp
이 matrix
, matrix_op
, matrix_add_exp
... 그러나 이것은 std::vector<matrix_exp>
으로 사실이 아니다 :
‘const std::vector<smu::matrix<float> >’ is not derived from ‘const std::vector<smu::matrix_exp<EXP> >’
난 그냥 그것을 위해 어떤 이유가있는 경우 필요한 여러 가지 알고리즘에 유용 할 수 있기 때문에,이 dlib에서 의도적 있는지 알고 싶어요 한 번에 여러 행렬을 처리 할 수 있습니다.이 문제를 해결할 수있는 작업이 있다면
_ "std :: vector에 어떤 종류의 행렬 표현식도 할당 할 수없는 것처럼 보입니다"_ : 자세한 내용을 말하십시오. _ "최소한의 완전하고 검증 가능한 예제를 만드는 방법"_ : http://stackoverflow.com/help/mcve –
이 기능을 구현 한 이유는 도서관 관리자에게 문의해야합니다. – Borgleader
그래, 왜 그들이 도서관에서이 기능을 얻지 못했을까요? 나는 커다란 이슈를 보지 못했지만, 템플릿 표현 기술에 익숙하지 않았기 때문에 거대한 이유가 있다면, 나는 알고 싶었고 인터넷에서 비슷한 질문을 찾지 못했습니다. – baptiste