作者WillBeFine (努力)
看板C_and_CPP
標題[問題] 請教一個處理array的問題
時間Thu Sep 12 00:21:52 2019
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1568218914.A.08B.html
1F:推 helloxin: memcpy? 09/12 00:30
2F:推 idiont: 如果你只是想要用1based 可以用int *array2 = array1 - 1; 09/12 00:47
3F:→ idiont: 如果你是要複製一份 那還是用memcpy 09/12 00:49
4F:推 s06i06: copy(begin(array1), end(array1), array2 + 1) 09/12 00:59
5F:→ firejox: for loop + OpenMP 09/12 01:02
6F:→ loveme00835: 4F 用 begin/end 結果最後 operator+ 破功 xD 09/12 01:22
7F:→ poyenc: 2F 是 undefined behavior, 指標加回來並且還可以存取陣列 09/12 01:47
8F:→ poyenc: 元素的前提是: 它原本就指向陣列元素 09/12 01:48
9F:→ djshen: 這種形式compiler有機會幫你vectorize吧 09/12 02:48
10F:推 Schottky: 同意三樓,看你實際上想做什麼而定,避免copy自然快 09/12 07:05
11F:→ WillBeFine: 謝謝各位,就是要在陣列先多塞一個bytes, 09/12 08:53
12F:→ WillBeFine: 資料多用for迴圈一定慢 09/12 08:53
13F:→ WillBeFine: 所以用 memcpy 較好?? 謝謝.. 09/12 08:55
14F:推 Schottky: 那你覺得一開始就用別的可插入的資料結構會不會更好 XD 09/12 09:08
15F:推 Schottky: 或是一開始就在 array1 前面預留很多空間可以插入東西 09/12 09:12
16F:→ Schottky: 另外你這是插入一個 int 不是插入一個 byte 09/12 09:12
17F:推 Gway: 樓上點出我的疑惑 xD 從idx 1 開始初始化資料 不行嗎? idx 09/12 10:24
18F:→ Gway: 0 填0 or -1 or # item個數也行啊 09/12 10:24
19F:→ WillBeFine: 因為array1 是傳入的,所以無法改. 09/12 11:56
20F:推 tomet: 你已經把輸入與輸出結果都訂死了,很難有不copy的做法 09/12 13:50
21F:推 bigbite: poyenc說的undefined behavior我看不懂耶, 問題在哪? 09/13 10:39