我有兩個非常大的數組,我只想memcpy只有不同的數據。問題是如果第二個數組中有零,它也會複製零並覆蓋原始數據。問題是,零也是一個有效的數據項。我可以使用什麼算法來只存儲不同的memcpy數據?memcpy只有不同的數據
我已經試過什麼:
void *my_memcpy(void *dest, const void *src, size_t n)
{
char *dp = (char*) dest;
const char *sp = (char*) src;
while (n--)
{
if (*sp != 0)
*dp = *sp;
dp++;
sp++;
}
return dest;
}
int main()
{
int test[4] = {1, 2, 3, 4};
int test2[4] = {0, 0, 0, 5};
my_memcpy(test, test2, 4);
for (int i = 0; i < 4; ++i)
cout << test[i];
}
您需要使用某種輔助數組跟蹤修改過的數據,然後使用它來確定需要複製哪些範圍。 – 2014-09-22 16:50:30
@Paul你可以發表一個例子嗎? – user4067441 2014-09-22 16:58:06
通過你的描述我打算從「第二」數組中複製,而你不想從它複製零(你不想覆蓋「原始數據」)。你不能用標準庫的例程來做到這一點,你需要通過條件檢查來實現一個循環。如果您擔心此處的性能,可以使用無條件執行此副本的方法。 – Jubatian 2014-09-22 17:03:29