Исходный код, чтобы понять ситуацию:
struct s {
int i;
float f
};
const int cnt = 10;
s *source = new s[cnt];
/*... fill source ...*/
int *dest_i = new int[cnt];
float *dest_f = new float[cnt];
for (int x = 0; x < cnt; x++) {
dest_i[x] = source[x].i;
dest_f[x] = source[x].f;
}
Итак, вот вопрос: есть ли более быстрый метод, чем перебирать массив с циклом?
Вы можете развернуть свой цикл. Это все, что я могу думать о макушке головы.
Это довольно бессмысленная оптимизация, чтобы написать самому, компилятор может попытаться сделать это за вас, если вы включите его (в gcc, скомпилируйте с --funroll-loops
)
Других решений пока нет …