Typ zwracanej wartości ciągu: remove_if
Mam dwie tablice liczb całkowitychdmap
idflag
na urządzeniu o tej samej długości i owinąłem je wskaźnikami urządzenia ciągu,dmapt
idflagt
W tablicy dmap jest kilka elementów o wartości -1. Chcę usunąć te -1 i odpowiadające im wartości z tablicy dflag.
W tym celu używam funkcji remove_if, ale nie mogę określić, jaka jest wartość zwracana przez to wywołanie lub jak powinienem użyć tej zwróconej wartości do uzyskania.
(Chcę przekazać te zredukowane tablice doreduce_by_key
funkcja, w której dflagt będzie używany jako klucze. )
Używam następującego wezwania do dokonania redukcji. Daj mi znać, jak mogę zapisać zwróconą wartość w zmiennej i użyć jej do adresowania poszczególnych tablicdflag
idmap
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()
);
gdzie funktor predykatu użyty powyżej jest zdefiniowany jako
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);
}
}