我有array[768]
但現在我只有256
(從0
到255
)樣本在此數組中。我想從0
每個值複製到255
和填充這個數組更好,我的意思是:從陣列三倍時間複製i值
[1][2][3] - > [1][1][1][2][2][2][3][3][3]
我怎麼能這樣做?有沒有一個庫函數可以做到這一點?
我有array[768]
但現在我只有256
(從0
到255
)樣本在此數組中。我想從0
每個值複製到255
和填充這個數組更好,我的意思是:從陣列三倍時間複製i值
[1][2][3] - > [1][1][1][2][2][2][3][3][3]
我怎麼能這樣做?有沒有一個庫函數可以做到這一點?
我不記得任何已知的庫函數能夠做到這一點。
如果你想這樣做原地的,我會做由右至左(即尾至頭),我覺得這是做原地的唯一途徑:
int i, j;
for (i = 255, j = 767; i > 0; i--) {
for (int k = 0; k < 3; k++) {
array[j--] = array[i];
}
}
如果你不需要做原地的,這就夠了:
for (int i = 0, j = 0; i < 256; i++) {
for (int k = 0; k < 3; k++)
new_array[j++] = array[i];
}
你的代碼工作正常!我試圖像這樣: '爲(I = 0; I <3;我++){ \t \t爲(K = 0; k <3; k ++){ \t \t TAB2 [K] = TAB1 [I ]。 \t \t} \t \t }' – user2976537 2015-03-31 19:44:50
你可以這樣做:
for (int i = 0; i < 768; ++i)
new_array[i] = array[i/3];
作業右側的索引每三步就會改變一次。
它不應該是'I%256'?他說他有256個樣本。我想他希望樣本的副本是連續的,看他的例子。這段代碼會給你'[1,2,3,1,2,3,1,2,3]'而不是'[1,1,1,2,2,2,3,3,3]' – 2015-03-31 19:37:05
@FilipeGonçalves呃..對不起,我的錯。其實正確的代碼是i/3 – 2015-03-31 19:51:30
啊是啊,'我/ 3'會做到這一點。那很整齊。我沒有想到這一點。 – 2015-03-31 19:52:26
你會修改陣列還是創建一個單獨的副本? – 2015-03-31 19:19:22
「數組」元素的類型是什麼? – 2015-03-31 19:22:44
我只是想將數組[256]中的值複製到數組2 [768] :)嘗試使用循環內循環但不適用於我。 – user2976537 2015-03-31 19:23:44