首页 > 解决方案 > 更改数组头指针 C++

问题描述

假设我有一个数组:

int* arr = new int[10];

我想以O(1)复杂度摆脱数组中的第一个单元格,所以我想也许有一些方法可以改变数组头指针,我的意思是:

arr = arr + 1 ;

但这不能解决问题程序仍然将 arr 处理到第二个单元格(我不能用这个指针重新分配)而不是内存块,数组头所以如果有人可以帮助我(摆脱复杂度为 O(1) 的数组中的第一个单元格或更改数组头指针 [我听说您可以将 asm 代码添加到 cpp 代码中,有帮助吗?])

标签: c++

解决方案


数组在其整个生命周期中始终具有恒定数量的元素。无法添加或删除元素。

我想也许有一些方法可以改变数组头指针,我的意思是:

arr = arr + 1 ;

使用像这样的“头”指针是唯一(尽管基于索引的类似解决方案也是可能的)“删除”的 O(1) 方式 - 或者更确切地说,假装元素已从数组中删除。

你不应该改变arr自己,因为你需要原始值来释放分配。

但这并不能解决程序仍然将 arr 视为第二个单元而不是内存块、数组头的问题

真的不清楚为什么你认为问题没有解决。


推荐阅读