如何创建动态整数数组

时间:2010-10-27 04:01:34

标签: c++

如何使用new关键字在C ++中创建动态整数数组?

7 个答案:

答案 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_sstd::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,退出条件为非零起始输入数字