[問題] 請教一個處理array的問題

看板C_and_CPP (C/C++)作者 (努力)時間6年前 (2019/09/12 00:21), 編輯推噓9(9013)
留言22則, 12人參與, 6年前最新討論串1/1
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

09/12 00:30, 6年前 , 1F
memcpy?
09/12 00:30, 1F

09/12 00:47, 6年前 , 2F
如果你只是想要用1based 可以用int *array2 = array1 - 1;
09/12 00:47, 2F

09/12 00:49, 6年前 , 3F
如果你是要複製一份 那還是用memcpy
09/12 00:49, 3F

09/12 00:59, 6年前 , 4F
copy(begin(array1), end(array1), array2 + 1)
09/12 00:59, 4F

09/12 01:02, 6年前 , 5F
for loop + OpenMP
09/12 01:02, 5F

09/12 01:22, 6年前 , 6F
4F 用 begin/end 結果最後 operator+ 破功 xD
09/12 01:22, 6F

09/12 01:47, 6年前 , 7F
2F 是 undefined behavior, 指標加回來並且還可以存取陣列
09/12 01:47, 7F

09/12 01:48, 6年前 , 8F
元素的前提是: 它原本就指向陣列元素
09/12 01:48, 8F

09/12 02:48, 6年前 , 9F
這種形式compiler有機會幫你vectorize吧
09/12 02:48, 9F

09/12 07:05, 6年前 , 10F
同意三樓,看你實際上想做什麼而定,避免copy自然快
09/12 07:05, 10F

09/12 08:53, 6年前 , 11F
謝謝各位,就是要在陣列先多塞一個bytes,
09/12 08:53, 11F

09/12 08:53, 6年前 , 12F
資料多用for迴圈一定慢
09/12 08:53, 12F

09/12 08:55, 6年前 , 13F
所以用 memcpy 較好?? 謝謝..
09/12 08:55, 13F

09/12 09:08, 6年前 , 14F
那你覺得一開始就用別的可插入的資料結構會不會更好 XD
09/12 09:08, 14F

09/12 09:12, 6年前 , 15F
或是一開始就在 array1 前面預留很多空間可以插入東西
09/12 09:12, 15F

09/12 09:12, 6年前 , 16F
另外你這是插入一個 int 不是插入一個 byte
09/12 09:12, 16F

09/12 10:24, 6年前 , 17F
樓上點出我的疑惑 xD 從idx 1 開始初始化資料 不行嗎? idx
09/12 10:24, 17F

09/12 10:24, 6年前 , 18F
0 填0 or -1 or # item個數也行啊
09/12 10:24, 18F

09/12 11:56, 6年前 , 19F
因為array1 是傳入的,所以無法改.
09/12 11:56, 19F

09/12 13:50, 6年前 , 20F
你已經把輸入與輸出結果都訂死了,很難有不copy的做法
09/12 13:50, 20F

09/13 10:39, 6年前 , 21F
poyenc說的undefined behavior我看不懂耶, 問題在哪?
09/13 10:39, 21F

09/13 13:01, 6年前 , 22F
09/13 13:01, 22F
文章代碼(AID): #1TUHyY2B (C_and_CPP)
文章代碼(AID): #1TUHyY2B (C_and_CPP)