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