微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

常规循环到指针循环的转换如何?

如何解决常规循环到指针循环的转换如何?

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 举报,一经查实,本站将立刻删除。