2011-11-02 2 views
2

구조체 배열에 min_element를 사용하려하지만 해당 연산에 대해 이진 함수를 정의 할 수 없습니다.스러스트 바이너리 프레디 티브 구현

나는 않고, 암시 적으로 그 구조를 정의하고 싶습니다

하지만

그것은 괜찮습니까? 나는 거의 모든 것을 시도했지만 아무것도 작동하지 않는 것 같습니다.

struct pred : public binary_function <bool , float3 , float3> 
{ 
    bool operator() (const float3 a, const float3 b) 
    { 
     return a.x > b.x; 
    } 
} 

대신 나는 바로 그것을 구현 아니에요 이상한 오류를 받고 있어요 내가 정확히 모르는 유형 중 하나에 과부하 문제가 있습니다.

도움 주셔서 감사합니다.

바이너리 조건부 승인을 사용하는 작동중인 MIN_ELEMENT 함수에 대한 예제가 필요합니다.

다시 한번 감사드립니다!

+2

그것은 당신이하지 않으면 귀하의 질문에 대답하기 어렵다 어떤 오류가 발생했는지 알려주십시오. 또한 템플릿 인수의 순서가 잘못되어 결과 유형이 마지막이어야합니다. –

+0

안녕하세요 요아킴, 내가 일할 때부터 돌아 왔을 때 상세한 오류 목록을 게시 하겠지만, 언급 한 주된 문제가 결과 형식 인 것으로 생각합니다. 오랫동안 결과로 첫 번째 인수를 사용하려고 시도했습니다. 마지막보다. 그래서 이것은 모든 것을 엉망으로 만든 것일 수 있습니다. 나는 그것이 효과가 있으면 업데이트를 게시 할 것입니다. –

답변

3

binary_function에 대한 템플릿 인수가 잘못된 순서로있는 것 같습니다. 반환 유형은 인수 유형을 따르며 그 반대의 경우는 아닙니다. 내 머리 위로 떨어져, 이진 술어는 (구매자가 컴파일러 근처에 적이 조심)이 같이 보일 것이다 찾고있는 비교를 할 수 :

struct pred: public binary_function<float3,float3,bool> 
{ 
    __device__ bool operator()(const float3 &a, const float3 &a) const 
    { 
     return a.x > b.x; 
    } 
} 
+0

아니면 그냥'''binary_function''' 만 남겨 둘 수 있습니다. '''min_element'''는 그것을 필요로하지 않습니다. –

+0

안녕 얘들 아, 내가 그것을 시도했지만, 대신 min 요소를 찾는, 그것은 내 배열의 대부분을 제로. –

+0

문제가 해결되었습니다. –