2011-11-02 3 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

Привет, Йоахим, я опубликую подробный список ошибок сразу, когда вернусь с работы, но я считаю, что основная проблема, о которой вы говорили, это тип результата, в течение нескольких часов я пытаюсь использовать первый аргумент как результат, а чем последний. так что это может быть что-то, что перепутало все up.i опубликует обновление, если оно сработает. –

ответ

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

проблема решена. –