Тип возвращаемого значения тяги :: remove_if
У меня есть два массива целыхdmap
а такжеdflag
на устройстве той же длины, и я обернул их указателями устройства тяги,dmapt
а такжеdflagt
В массиве dmap есть несколько элементов со значением -1. Я хочу удалить эти -1 's и соответствующие значения из массива 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 Tuple;
__host__ __device__
bool operator()(const Tuple& a )
{
return thrust::get(a) == (-1);
}
}