У меня есть ввод массивов различных типов (void**
),Thrust кортеж динамического размера
, например, два массива ints
и chars
, и я хочу сделать массив кортежей из них.
I Количество массивов и их типы неизвестно во время компиляции, поэтому я не могу просто thrust::make_tuple
, я могу разбить его на все возможности, но так как я могу иметь 10 типов и 10 массивов, это будет 100 жестко закодированные строки make_tuple
.
Я ищу более удобный способ, чтобы сделать это, я попробовал этот простой пример превращения массива в кортеж:
template<typename T>
thrust::tuple<int, T> makeBiggerTuple(T tuple, int* array, int size)
{
if (size > 1)
return makeBiggerTuple(thrust::make_tuple(*array, tuple), array++, size - 1);
return thrust::make_tuple(*array, tuple);
}
, но это не будет компилировать на всех, потому что расширить его самостоятельно на и до тех пор, пока не произойдет ошибка.
Итак, есть ли способ избежать большого количества жестко привязанных линий для каждого случая?
p.s
Я на самом деле нужен кортеж их итераторы, но это эквивалентный вопрос.
Как вы знаете типы ввода ('void **') во время выполнения? Хотя кортежи набираются во время компиляции, в зависимости от вашего ответа на мой вопрос мы все равно можем найти способ. – Paranaix
I тоже есть Type * извините за отсутствие упоминания. Но я обнаружил, что типы не имеют значения для таких функций, как set_intersect, поэтому все дело в создании динамического кортежа. – Vladp
Это 'Тип **' или 'Тип *' Я немного запутался прямо сейчас – Paranaix