看板 C_and_CPP 關於我們 聯絡資訊
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]; 抱歉, 謝謝各位... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.154.185 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1568218914.A.08B.html
helloxin: memcpy? 09/12 00:30
idiont: 如果你只是想要用1based 可以用int *array2 = array1 - 1; 09/12 00:47
idiont: 如果你是要複製一份 那還是用memcpy 09/12 00:49
s06i06: copy(begin(array1), end(array1), array2 + 1) 09/12 00:59
firejox: for loop + OpenMP 09/12 01:02
loveme00835: 4F 用 begin/end 結果最後 operator+ 破功 xD 09/12 01:22
poyenc: 2F 是 undefined behavior, 指標加回來並且還可以存取陣列 09/12 01:47
poyenc: 元素的前提是: 它原本就指向陣列元素 09/12 01:48
djshen: 這種形式compiler有機會幫你vectorize吧 09/12 02:48
Schottky: 同意三樓,看你實際上想做什麼而定,避免copy自然快 09/12 07:05
WillBeFine: 謝謝各位,就是要在陣列先多塞一個bytes, 09/12 08:53
WillBeFine: 資料多用for迴圈一定慢 09/12 08:53
WillBeFine: 所以用 memcpy 較好?? 謝謝.. 09/12 08:55
Schottky: 那你覺得一開始就用別的可插入的資料結構會不會更好 XD 09/12 09:08
Schottky: 或是一開始就在 array1 前面預留很多空間可以插入東西 09/12 09:12
Schottky: 另外你這是插入一個 int 不是插入一個 byte 09/12 09:12
Gway: 樓上點出我的疑惑 xD 從idx 1 開始初始化資料 不行嗎? idx 09/12 10:24
Gway: 0 填0 or -1 or # item個數也行啊 09/12 10:24
WillBeFine: 因為array1 是傳入的,所以無法改. 09/12 11:56
tomet: 你已經把輸入與輸出結果都訂死了,很難有不copy的做法 09/12 13:50
bigbite: poyenc說的undefined behavior我看不懂耶, 問題在哪? 09/13 10:39
poyenc: 樓上可以參考 http://eel.is/c++draft/expr.add#4.2 09/13 13:01