[問題] 請教一個處理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