2015-03-31 43 views
1

我有array[768]但現在我只有256(從0255)樣本在此數組中。我想從0每個值複製到255和填充這個數組更好,我的意思是:從陣列三倍時間複製i值

[1][2][3] - > [1][1][1][2][2][2][3][3][3] 

我怎麼能這樣做?有沒有一個庫函數可以做到這一點?

+1

你會修改陣列還是創建一個單獨的副本? – 2015-03-31 19:19:22

+0

「數組」元素的類型是什麼? – 2015-03-31 19:22:44

+0

我只是想將數組[256]中的值複製到數組2 [768] :)嘗試使用循環內循環但不適用於我。 – user2976537 2015-03-31 19:23:44

回答

1

我不記得任何已知的庫函數能夠做到這一點。

如果你想這樣做原地的,我會做由右至左(即尾至頭),我覺得是做原地的唯一途徑:

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]; 
} 
+0

你的代碼工作正常!我試圖像這樣: '爲(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

1

你可以這樣做:

for (int i = 0; i < 768; ++i) 
    new_array[i] = array[i/3]; 

作業右側的索引每三步就會改變一次。

+0

它不應該是'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

+0

@FilipeGonçalves呃..對不起,我的錯。其實正確的代碼是i/3 – 2015-03-31 19:51:30

+0

啊是啊,'我/ 3'會做到這一點。那很整齊。我沒有想到這一點。 – 2015-03-31 19:52:26