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_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)
.
답변
다음을 사용하여 일부 메모리를 동적으로 할당합니다 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이 아닙니다.