更改数组头指针C ++

问题描述 投票:0回答:2

假设我有一个数组:

int* arr = new int[10];

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

arr = arr + 1 ;

但是这不能解决问题程序仍将arr移至第二个单元,而不是存储块,数组头因此,如果有人可以帮助我(摆脱O(1)复杂性的数组中的第一个单元格或更改数组头指针[我听说您可以将asm代码添加到cpp代码中,可以帮助吗? ])

c++
2个回答
0
投票

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

我以为也许有某种方法可以更改数组头指针:

arr = arr + 1 ;

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

但是您不应该更改arr本身,因为您需要原始值来释放分配。

但是这不能解决问题,程序仍然将arr替换为第二个单元,而不是存储块,数组头]]

目前还不清楚为什么您认为问题没有解决。


0
投票

您将违反每一个C ++代码准则,但是您可以通过以下方式做到这一点:

© www.soinside.com 2019 - 2024. All rights reserved.