C++ 常规循环到指针循环的转换,如何实现? SomeClass*东西; int N=10; stuff=新的SomeClass[N]; Someclass*objectPtrDelete=null; int i=0; 对于(Someclass*pointer=begin();pointer!=end();pointer++) { 如果(指针->getSomeAttr()==randomPointer.getSomeAttr()){ objectPtrDelete=指针; 打破 } i++; } //使用此for循环收缩C阵列,向左移动 对于(int j=i;j
最后一个循环是否可以转换为指针循环?如果可以,如何正确完成?注意,这些名字都是虚构的,即虚构的东西。我已经实现了类似的东西,但是,我想了解如何将最后一个循环转换为执行相同操作的循环指针 这样做:C++ 常规循环到指针循环的转换,如何实现? SomeClass*东西; int N=10; stuff=新的SomeClass[N]; Someclass*objectPtrDelete=null; int i=0; 对于(Someclass*pointer=begin();pointer!=end();pointer++) { 如果(指针->getSomeAttr()==randomPointer.getSomeAttr()){ objectPtrDelete=指针; 打破 } i++; } //使用此for循环收缩C阵列,向左移动 对于(int j=i;j,c++,loops,for-loop,pointers,C++,Loops,For Loop,Pointers,最后一个循环是否可以转换为指针循环?如果可以,如何正确完成?注意,这些名字都是虚构的,即虚构的东西。我已经实现了类似的东西,但是,我想了解如何将最后一个循环转换为执行相同操作的循环指针 这样做: SomeClass* stuff; int N = 10; stuff = new SomeClass[N]; Someclass* objectPtrDelete = null; int i = 0; for(Someclass* pointer = begin(); pointer != end
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];
for(int j=i;j
进入指针循环。(编辑以考虑您的更改)
如果我很明白你想要什么
一些类的东西
你可以替换
for(int j=i;j
借
for(SomeClass*p=stuff+i;p
或轻松管理有关类型的更改:
for (SomeClass * p = stuff + i; p < stuff + N-1; p++)
*p = *(p + 1);
for(自动p=stuff+i;p
etc首先使用此结构(没有结束分号) <> >在C++中无效。 应该是这样的
int[] a = new int[N]
如果我正确理解了你的问题,你的意思如下
int *a = new int[N];
什么是“指针循环”?我不知道。但是,这是正确的吗?你是这样做的吗?如果你使用指针而不是索引,不会有太大的变化。你只需要知道你使用的是什么条件(大概是代码< PTR!= A+N<代码>,确保你在正文中正确引用。@阿尔宾M这个int []新的INT[N]不是有效的C++记录。我有一个指针数组,<代码> SOCKLASS *;这是初始化的:<代码>东西=新的物理模型〔10〕。Bruno,请看我的更新。我很抱歉没有早些澄清。@AlbinM我更新了我的答案,只是类型和名称发生了变化。Bruno,这还会缩小数组吗?你的代码很混乱,int j现在在哪里?@AlbinM你的意思是
缩小数组
?它的大小没有变化,你只需移动元素blad,就可以看到我的更新了因为之前没有澄清,所以进行了逻辑分析。@AlbinM发生了什么变化?@VladfromMoscow只是数组的类型和变量的名称
for (auto p = stuff + i; p < stuff + N-1; p++)
*p = *(p + 1);
int[] a = new int[N]
int *a = new int[N];
for ( auto prev = a, next = a + 1; next != a + N; ++next )
{
*prev++ = *next;
}