Typ des Rückgabewerts von thrust :: remove_if

Ich habe zwei Arrays von ganzen Zahlendmap unddflag auf dem Gerät der gleichen Länge und ich habe sie mit Schubgerät Zeiger gewickelt,dmapt unddflagt

Das Array dmap enthält einige Elemente mit dem Wert -1. Ich möchte diese -1 und die entsprechenden Werte aus dem Dflag-Array entfernen.

Ich verwende die Funktion remove_if, kann aber nicht herausfinden, wie der Rückgabewert dieses Aufrufs lautet oder wie ich diesen zurückgegebenen Wert verwenden soll, um ihn abzurufen.

(Ich möchte diese reduzierten Arrays an die übergebenreduce_by_key Funktion, bei der dflagt als Schlüssel verwendet wird. )

Ich benutze den folgenden Aufruf, um die Reduktion durchzuführen. Bitte lassen Sie mich wissen, wie ich den zurückgegebenen Wert in einer Variablen speichern und zur Adressierung der einzelnen Arrays verwenden kanndflag unddmap

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() 
); 

wobei der oben verwendete Prädikat-Funktor definiert ist als

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); 
    } 
} 

Antworten auf die Frage(1)

Ihre Antwort auf die Frage