如何解决常规循环到指针循环的转换如何?
SomeClass* stuff;
int N = 10;
stuff = new SomeClass[N];
Someclass* objectPtrDelete = null;
int i = 0;
for(Someclass* pointer = begin(); pointer != end(); pointer++)
{
if(pointer->getSomeAttr() == randomPointer.getSomeAttr()){
objectPtrDelete = pointer;
break;
}
i++;
}
// Shrinking the C-array with this for loop,shifting left
for (int j = i; j < N-1; j++)
stuff[j] = stuff[j + 1];
是否可以将最后一个循环转换为Pointer循环,如果可以,该如何正确完成?请注意,名称是虚构的,即虚构的名称。我已经实现了类似的方法,但是,我想了解如何将最后一个循环转换为执行相同操作的循环指针。
做到这一点:
for (int j = i; j < N-1; j++)
stuff[j] = stuff[j + 1];
进入指针循环。
解决方法
对于初学者来说,这种结构(没有结尾的分号)
int[] a = new int[N]
在C ++中无效。
应该看起来像
int *a = new int[N];
如果我正确理解了您的问题,则表示类似以下内容
for ( auto prev = a,next = a + 1; next != a + N; ++next )
{
*prev++ = *next;
}
,
(已编辑,已将您的更改考虑在内)
如果我很了解你想要什么,
SomeClass *的东西;
您可以替换
for (int j = i; j < N-1; j++) stuff[j] = stuff[j + 1];
作者
for (SomeClass * p = stuff + i; p < stuff + N-1; p++)
*p = *(p + 1);
或轻松管理有关类型的更改:
for (auto p = stuff + i; p < stuff + N-1; p++)
*p = *(p + 1);
等
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。