void removeDupe(int* arr, int len, int* dup, int& c)
{
int i, j = 0, k = 0;
int check = -1;
int* temp1;
int* temp2;
temp1 = new int[len];
temp2 = new int[len];
for (i = 0; i < len; i++)
{
if (check == arr[i])
{
if (check != temp2[k])
temp2[++k] = check;
}
else
{
temp1[j++] = arr[i];
check = arr[i];
}
}
arr = temp1;
dup = temp2;
delete[] temp1;
delete[] temp2;
return;
}
길이 len인 배열 arr를 받아서(이미 정렬되어 있음)
그 중에서 중복되는 원소를 없애고 duplicate 배열에 따로 저장하고 싶은데
예)
arr : 2, 2, 3, 5, 9, 15, 18, 33, 71
->
arr : 2, 3, 5, 9, 15, 18, 33, 71
duplicate : 2
temp1을 그냥 출력해 보면 문제가 없는데
arr = temp1;를 수행한 후에 arr를 출력하면 앞쪽 두개가 사라지고
0, 0, 5, 9, 15, 18, 33, 71, 대충 len을 안바꿔서 출력되는 숫자 한개
이렇게 되는데
java처럼 배열 전체를 그냥 넘겨주려면 c++은 어떻게 하면 되나요?