为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建一个动态整数数组

如何创建一个动态整数数组

C++
湖上湖 2019-10-09 17:43:28
如何使用new关键字在C ++中创建动态整数数组?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

int main()

{

  int size;


  std::cin >> size;


  int *array = new int[size];


  delete [] array;


  return 0;

}

不要忘记为delete您分配的每个数组new。


查看完整回答
反对 回复 2019-10-09
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

从C ++ 11开始,有一种安全的替代方法,new[]与delete[]零开销不同,它是std::vector:


std::unique_ptr<int[]> array(new int[size]);

在C ++ 14中:


auto array = std::make_unique<int[]>(size);

以上两个都依赖于相同的头文件, #include <memory>


查看完整回答
反对 回复 2019-10-09
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

一旦对动态数组提出疑问,您可能不仅希望创建具有可变大小的数组,而且还希望在运行时更改它的大小。这是带有的示例memcpy,您也可以使用memcpy_s或std::copy。取决于编译器,<memory.h>或者<string.h>可能是必需的。使用此功能时,您将分配新的存储区域,将原始存储区域的值复制到该区域,然后释放它们。


//    create desired array dynamically

size_t length;

length = 100; //for example

int *array = new int[length];


//   now let's change is's size - e.g. add 50 new elements

size_t added = 50;

int *added_array = new int[added];


/*   

somehow set values to given arrays

*/ 


//    add elements to array

int* temp = new int[length + added];

memcpy(temp, array, length * sizeof(int));

memcpy(temp + length, added_array, added * sizeof(int));

delete[] array;

array = temp;

您可以使用常数4代替sizeof(int)。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 1398 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信