gpt4 book ai didi

c++ - 不能用双指针反转数组

转载 作者:太空宇宙 更新时间:2023-11-04 14:01:19 25 4
gpt4 key购买 nike

我在学校作业中遇到了一些问题,我们应该创建自己的迭代器并使用它来反转数组中的元素。如果它只是单指针,我想我会管理它,但这是双指针并且非常困惑...

这里是反向代码:

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 时,starttemp 自然会发生变化。

我这辈子都想不出如何解决这个问题....

这是我在 main 中进行的调用:

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]<<" ";
}

最佳答案

我解决了!

为这个问题坐了两天,当我最终决定将它发布在这里时,我解决了它。

是这样的:

void reverse(T start, T end)
{
unsigned temp = *start;
while(start < end)
{
temp = *start;
*start = *end;
*end = temp;
++start;
--end;
}
}

我将临时变量设为无符号而不是 T。但我不确定这是否适用于我们自己的对象,例如我们创建的球体等...有人知道吗?

关于c++ - 不能用双指针反转数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19207021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com