假设我有一个数组:
int* arr = new int[10];
我想以 O(1) 的复杂度去除数组中的第一个单元格 所以我想也许有一些方法可以改变数组头指针 我的意思是:
arr = arr + 1 ;
但这不能解决问题程序仍然将 arr 处理为第二个单元格(我不能用这个指针重新分配)而不是内存块,数组头 所以我希望有人能帮我解决这个问题(以 O(1) 复杂度去除数组中的第一个单元格或更改数组头指针 [我听说您可以将 asm 代码添加到 cpp 代码中,有帮助吗? ] )
最佳答案
数组在其整个生命周期中始终具有恒定数量的元素。无法添加或删除元素。
I thought maybe there is some way to change the array head pointer I mean :
arr = arr + 1 ;
使用像这样的“头”指针是唯一的(尽管基于索引的类似解决方案也是可能的)O(1) 方法来“删除”——或者更确切地说,假装元素已从数组中删除。
不过,您不应该更改 arr
本身,因为您需要原始值来释放分配。
but this not solve the problem the program still treats arr to the second cell instead of the memory block, array head
您认为问题没有解决的原因真的不清楚。
关于c++ - 更改数组头指针 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58698571/