Sorry! 请教各位:
下列程式, 除了用 for loop 外, 有没有更快的方法?
int i =0;
int array1[5] = {1,3,5,7,9};
int array2[6];
for (i=0; i<5; i++)
array2[i+1] = array1[i];
抱歉, 谢谢各位...
作者:
idiont (supertroller)
2019-09-12 00:47:00如果你只是想要用1based 可以用int *array2 = array1 - 1;如果你是要复制一份 那还是用memcpy
作者:
s06i06 (三条鱼)
2019-09-12 00:59:00copy(begin(array1), end(array1), array2 + 1)
作者:
firejox (Tangent)
2019-09-12 01:02:00for loop + OpenMP
4F 用 begin/end 结果最后 operator+ 破功 xD
作者:
poyenc (发箍)
2019-09-12 01:47:002F 是 undefined behavior, 指标加回来并且还可以存取阵列元素的前提是: 它原本就指向阵列元素
作者:
djshen (djshen)
2019-09-12 02:48:00这种形式compiler有机会帮你vectorize吧
同意三楼,看你实际上想做什么而定,避免copy自然快
谢谢各位,就是要在阵列先多塞一个bytes,资料多用for循环一定慢所以用 memcpy 较好?? 谢谢..
那你觉得一开始就用别的可插入的资料结构会不会更好 XD或是一开始就在 array1 前面预留很多空间可以插入东西另外你这是插入一个 int 不是插入一个 byte
作者:
Gway (我爱的你 也爱我 好吗?)
2019-09-12 10:24:00楼上点出我的疑惑 xD 从idx 1 开始初始化资料 不行吗? idx0 填0 or -1 or # item个数也行啊
作者: tomet (沁) 2019-09-12 13:50:00
你已经把输入与输出结果都订死了,很难有不copy的做法
作者:
bigbite (子子孙孙永保用)
2019-09-13 10:39:00poyenc说的undefined behavior我看不懂耶, 问题在哪?
作者:
poyenc (发箍)
2019-09-13 13:01:00