У меня есть этот массив структуры с некоторыми операторами перегруженныхКак использовать массив struct как индекс для массива struct?
struct xyz
{
int x; float y;
};
std::vector<xyz> a1,a2,a3;
Когда я использую это как
a1 [ a2 [ i ] ] = a3 [ i ]
//by this I mean
//a1 [ a2 [ i ].x ].x = a3 [ i ].x
//a1 [ a2 [ i ].x ].y = a3 [ i ].y
Я получаю эту ошибку "\ OCL6D24.tmp.cl", строка 236: ошибка: выражение должно иметь интегральный или перечисляемый тип
Я использую это в ядре OpenCL. Но эта проблема аналогична обычной программе на C++. Как это решить?
Обновление: Я не думаю, что то, что мне нужно, возможно, особенно в ситуации типа OpenCL. Но я решил проблему. Это был дизайнерский недостаток.
Массивные и векторные индексы являются целыми числами и нет ничего, что могло бы «решить». Может быть, вы хотите 'std :: map'? –
Вы не можете использовать объект 'xyz' как индекс массива (' vector'). Вы имеете в виду 'a1 [a2 [i] .x] = a3 [i];'? – BoBTFish
Я хочу сделать что-то вроде этого a1 [a2 [i] .x] .x = a3 [i] .x; a1 [a2 [i] .y] .y = a3 [i] .y; – ark