我在学校作业中遇到了一些问题,我们假设我们要创建自己的迭代器并使用它来反转数组中的元素。如果它只是单指针,我想我会管理它,但这是双指针并且令人困惑......
这是反向代码:
void reverse(T start, T end)
{
T temp = start;
while(start < end)
{
*temp = *start;
*start = *end;
*end = *temp;
++start;
--end;
}
}
这就是问题所在,因为当我指向temp
时start
,temp
会得到start
的值和地址。但是当我指向start
良好end
时start
,ANDtemp
自然会发生变化。
我一生都无法弄清楚如何解决这个问题......
这是我的主要调用:
int a[5] = {5, 12, 1, 6, 9};
Itterfunctions<int*> itt;
int *b = a;
itt.reverse(b, b+4);
for (int i = 0; i < 5; i++)
{
cout<<a[i]<<" ";
}