[问题] 请教一个处理array的问题

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

Links booklink

Contact Us: admin [ a t ] ucptt.com