int *ptr_Array;
ptr_Array = new int[5];
是否可以删除数组中的最后一个元素? 我可以一次推出一个整数。 我可以删除整个数组。
delete []ptr_Array;
ptr_Array = NULL;
我找不到关闭POP元素的方法。
我尝试了以下操作并加载了其他尝试。
ptr_Array[i_IastItem] = NULL;
我无法理解,我一整天都在努力。
答案 0 :(得分:2)
您可以改为使用std::vector
。
std::vector<int> x;
x.push_back(42);
x.pop_back();
答案 1 :(得分:2)
如果需要将数组的大小调整为大于或小于已分配的数组,则必须重新分配它。这个选项并不多:
使用malloc()
,realloc()
和free()
创建,调整大小并销毁数组。
您使用new[]
创建数组并填充它,然后使用new[]
创建另一个新大小的数组,并相应地填充它,最后delete[]
旧数组。
当然你可以使用std::vector
,但你已经说过你不想这样做。
操作系统一次分配内存块。如果您需要更多内存,则不能保证相邻的内存位置可供使用,因此您必须重新分配整个内容+额外的空间。取消分配数组的一部分也不是通常支持的内容。我不知道具体原因,但我认为这可能是因为如果每个程序可以分配超过它需要的内容,那么它会使分区内存变得更加困难,然后释放内存,而不是一点一滴的内存这里和那里。你最终会在整个地方分割你的记忆。释放的内存可能对其他程序没有用,只是因为你正在零散地释放内存 - 你不能把程序,数组或其他东西放在那个小洞里。
答案 2 :(得分:1)
只删除最后一个元素的简单代码:
int size = /* insert size of array here */;
int new_ptr* = new int[size-1];
int i;
for (i = 0; i < size-1; ++i) {
new_ptr[i] = ptr_Array[i];
}
delete[] ptr_Array;
ptr_Array = new_ptr;
在那里,你想做什么。 ptr_Array
现在是一个具有相同顺序的相同值的数组,除了弹出最后一个元素,并且该数组的大小比之前小1。
但说实话,我同意其他的回答者,并认为你应该在C ++中使用std::vector
。数组可能很头疼,特别是因为你总是需要在另一个变量中跟踪它的大小。
答案 3 :(得分:0)
如果你想按照自己的意愿弹出和推送项目,无论你想要什么,都可以阅读std :: vector类。
答案 4 :(得分:0)
数组中没有任何东西被推入或弹出它。 C ++中的数组具有固定的大小,虽然你可以给它们假设有推/弹操作符,但数组本身没有这些。