정수의 동적 배열을 만드는 방법 정수의 동적 배열을 만드는 방법은 무엇입니까?

new키워드를 사용하여 C ++에서 정수의 동적 배열을 만드는 방법은 무엇입니까?



답변

int main()
{
  int size;

  std::cin >> size;

  int *array = new int[size];

  delete [] array;

  return 0;
}

delete할당 하는 모든 어레이를 잊지 마십시오 new.


답변

C ++ 11 이후로 다음 new[]delete[]달리 오버 헤드가 0 인 안전한 대안이 있습니다 std::vector.

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

C ++ 14에서 :

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

위의 두 가지 모두 동일한 헤더 파일에 의존합니다. #include <memory>


답변

표준 템플릿 라이브러리 사용을 고려할 수 있습니다. 간단하고 사용하기 쉬우 며 메모리 할당에 대해 걱정할 필요가 없습니다.

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


답변

int* array = new int[size];


답변

동적 배열에 대한 질문이 생기 자마자 가변 크기로 배열을 만들뿐만 아니라 런타임 중에 크기를 변경하기를 원할 수 있습니다. 여기에 예입니다 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).


답변

다음을 사용하여 일부 메모리를 동적으로 할당합니다 new.

int* array = new int[SIZE];


답변

#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 크기였으며 종료 조건은 입력 번호를 시작하는 0이 아닙니다.


이 글은 C++ 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.