假设我有一个数组:
int* arr = new int[10];
并且我想摆脱 O(1)复杂度的数组中的第一个单元格 所以我想也许有办法改变数组头指针 我的意思是:
arr = arr + 1 ;
但这不能解决问题,程序仍将arr视为第二个单元格(我无法使用此指针重新分配)而不是内存块,数组头 因此,如果有人可以帮助我(摆脱O(1)复杂性的数组中的第一个单元格或更改数组头指针[我听说您可以将asm代码添加到cpp代码中,可以帮上忙吗? ])
假设我有一个数组:
int* arr = new int[10];
并且我想摆脱 O(1)复杂度的数组中的第一个单元格 所以我想也许有办法改变数组头指针 我的意思是:
arr = arr + 1 ;
但这不能解决问题,程序仍将arr视为第二个单元格(我无法使用此指针重新分配)而不是内存块,数组头 因此,如果有人可以帮助我(摆脱O(1)复杂性的数组中的第一个单元格或更改数组头指针[我听说您可以将asm代码添加到cpp代码中,可以帮上忙吗? ])
数组在整个生命周期中始终具有恒定数量的元素。无法添加或删除元素。
我想也许有某种方法可以改变我指的数组头指针:
arr = arr + 1 ;
像这样使用“头”指针是唯一的O(1)“删除”方法(尽管也可以使用基于索引的类似解决方案),或者假装已从数组中删除了元素。
但是,您不应更改arr
本身,因为您需要原始值来释放分配。
但这不能解决问题,程序仍然将arr而不是存储块,数组头视为第二个单元格
目前还不清楚为什么您认为问题没有解决。