2015-03-31 45 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