c++ - 常规循环到指针循环转换,如何?
问题描述
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;
}
推荐阅读
- android - 有没有办法在用户无权访问 apk 文件的情况下安装 apk remoramente?
- python - Twisted:缓存实例列表
- python-3.x - 即使在过滤掉负值后,也会在 log2 中遇到除以零的警告
- curl - gitlab-ci 文件中 Jenkins API 的 cURL 命令正在删除参数
- weblogic12c - 带有 Maven 的 REST Web 服务适用于 Tomcat,但不适用于 Weblogic 12c - Eclipse
- java - Javafx Spring Boot - 运行应用程序时出错
- ruby-on-rails - 如何防止rails mailer在每次发送电子邮件时打开新的gmail登录会话
- javascript - 项目中不存在目标“/t:native_metrics”
- wolkenkit - 聚合上的 read() 函数的 API 是什么?
- c# - 将下拉 DataFieldCategory 移动到列表底部