我有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