То, что вы просите, это классический параллельный алгоритм, называемый сжатием потока 1.
Если Thrust является опцией, вы можете просто использовать thrust::copy_if
. Это устойчивый алгоритм, он сохраняет относительный порядок всех элементов.
Грубый эскиз:
#include
template
struct is_non_zero {
__host__ __device__
auto operator()(T x) const -> bool {
return T != 0;
}
};
// ... your input and output vectors here
thrust::copy_if(input.begin(), input.end(), output.begin(), is_non_zero());
Если Thrust - не - опция, вы можете реализуйте сжатие потока самостоятельно (есть много литературы по этой теме). Это веселое и разумно простое упражнение, а также является основным строительным блоком для более сложных параллельных примитивов.
(1) Строго говоря, это не в точности сжатие потока в традиционном смысле , поскольку уплотнение потока традиционно является стабильным алгоритмом, но ваши требования не включают стабильность. Это непринужденное требование могло бы привести к более эффективной реализации?
Вы перепутали свой вар с классом.
Вы должны написать
Object obj = parser.parse(reader);
parser
- это ваша переменная, которая содержит Instance of JsonParser
с методом parse()
вместо [1112 ]
Object obj = JsonParser.parse(reader);
JsonParser
- это Class JsonParser
, который не имеет статического метода parse()