如何使用new
关键字在C ++中创建动态整数数组?
答案 0 :(得分:98)
int main()
{
int size;
std::cin >> size;
int *array = new int[size];
delete [] array;
return 0;
}
不要忘记使用delete
分配的每个数组new
。
答案 1 :(得分:45)
从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>
答案 2 :(得分:24)
您可能需要考虑使用标准模板库。它简单易用,而且您不必担心内存分配。
http://www.cplusplus.com/reference/stl/vector/vector/
int size = 5; // declare the size of the vector
vector<int> myvector(size, 0); // create a vector to hold "size" int's
// all initialized to zero
myvector[0] = 1234; // assign values like a c++ array
答案 3 :(得分:4)
int* array = new int[size];
答案 4 :(得分:3)
只要有关动态数组的问题,您可能不仅要创建具有可变大小的数组,还要在运行时更改它的大小。以下是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)
。
答案 5 :(得分:0)
使用new
动态分配一些内存:
int* array = new int[SIZE];
答案 6 :(得分:-1)
#include <stdio.h>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
float arr[2095879];
long k,i;
char ch[100];
k=0;
do{
cin>>ch;
arr[k]=atof(ch);
k++;
}while(ch[0]=='0');
cout<<"Array output"<<endl;
for(i=0;i<k;i++){
cout<<arr[i]<<endl;
}
return 0;
}
上面的代码有效,可以定义的最大float或int数组大小为2095879,退出条件为非零起始输入数字