Тип возвращаемого значения тяги :: remove_if
У меня есть два массива целыхdmap
а такжеdflag
на устройстве
той же длины
и я обернул их указателями устройства тяги,dmapt
а также
dflagt
В массиве dmap есть несколько элементов со значением -1. я бы хотел удалите эти -1 и соответствующие значения из массив dflag.
Я использую функцию remove_if, чтобы сделать это, но я не могу понять, что возвращаемое значение этого вызова или как я должен использовать это возвращаемое значение, чтобы получить.
(Я хочу передать эти уменьшенные массивыreduce_by_key
функция
где dflagt будет использоваться в качестве ключей. )
Я использую следующий вызов для выполнения сокращения. Пожалуйста, позволь мне
знать, как я могу сохранить возвращаемое значение в переменной и
использовать его для адресации отдельных массивовdflag
а такжеdmap
thrust::remove_if(
thrust::make_zip_iterator(thrust::make_tuple(dmapt, dflagt)),
thrust::make_zip_iterator(thrust::make_tuple(dmapt+numindices, dflagt+numindices)),
minus_one_equality_test()
);
где функтор предиката, использованный выше, определяется как
struct minus_one_equality_test
{
typedef typename thrust::tuple<int,int> Tuple;
__host__ __device__
bool operator()(const Tuple& a )
{
return thrust::get<0>(a) == (-1);
}
}