首页 > 解决方案 > 常规循环到指针循环转换,如何?

问题描述

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

进入一个指针循环。

标签: c++loopsfor-looppointers

解决方案


对于初学者来说,这个结构(没有结束分号)

int[] a = new int[N]

在 C++ 中无效。

它应该看起来像

int *a = new int[N];

如果我正确理解了您的问题,您的意思类似于以下内容

for ( auto prev = a, next = a + 1; next != a + N; ++next )
{
    *prev++ = *next;
}

推荐阅读