【发布时间】:2013-03-27 09:23:32
【问题描述】:
源码了解情况:
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;
}
那么,问题来了:有没有比循环遍历数组更快的方法?
【问题讨论】:
-
好吧,你必须复制它们中的每一个。如果不通过一种或另一种方式循环,您希望如何做到这一点?
-
我猜你可以在填充
s本身时填充扁平数组,或者完全放弃s。 -
@user315052,是的,但从问题来看,我猜你不能。
-
@chris 实际上我正在寻找某种
memcpy类似步幅的模拟函数 -
@Yarg,如果您不介意循环两次,您可以使用两个带有快速 lambda 的
std::transforms。