Реализация бинарного предиката тяги - PullRequest
2 голосов
/ 02 ноября 2011

Я пытаюсь использовать 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 функции с принятием двоичного предиката.

Еще раз спасибо!

1 Ответ

3 голосов
/ 02 ноября 2011

Похоже, у вас есть аргументы шаблона для функции 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;
    }
}
...