您的循環完美地工作。該問題必須在代碼中的其他位置。
下面是一個例子程序,拷貝三種不同的方式中的數據:一個for
循環,memcpy
和std::copy
:
#include <algorithm>
#include <cstring>
#include <iostream>
#include <iterator>
void copy1(int D[], int A[], int len) {
for(int k = 0; k < len; k++)
D[k] = A[k];
}
void copy2(int D[], int A[], int len) {
std::memcpy(D, A, len*sizeof(int));
}
void copy3(int D[], int A[], int len) {
std::copy(A, A+len, D);
}
int main() {
int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *d = new int[10];
std::ostream_iterator<int> out(std::cout, ",");
// First, print the initial values
std::copy(d, d+10, out);
std::cout << "\n";
// Next do the copies and print the values again
copy1(d, a, 10);
std::copy(d, d+10, out);
std::cout << "\n";
copy2(d, a, 10);
std::copy(d, d+10, out);
std::cout << "\n";
copy3(d, a, 10);
std::copy(d, d+10, out);
std::cout << "\n";
}
我得到的輸出是:
0,0,0,0,0,0,0,0,0,0,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
請張貼[SSCCE(http://sscce.org/)。 – ildjarn 2012-07-06 23:53:07
如果你可以爲你的段落設置可讀性的格式,比如突出你的代碼,或者把它放在不同的行上,這將會很有幫助。所有穿插在同一字體中的代碼都很難做出來。這是爲了你自己的利益,你的文章可讀性越強,閱讀它的人越多,並且希望有所幫助:) – Levon 2012-07-06 23:55:23
有沒有理由不能製作'A'和'D''std :: vector's,並且用'D = A;'來複制副本? – 2012-07-07 00:00:59