배열의 크기를 변수로 설정하기
조회수 18696회
int cnt;
const int * cntptr = &cnt;
cin >> cnt;
int arr[*cntptr];
도 안되구..
도대체 변수의 크기를 변수로 받는 법은 없을까요> ㅠㅠ
2 답변
-
C++ 표준에서는 배열의 크기를 컴파일타임에 결정합니다. 따라서 배열의 크기는 일반 변수로 정해질 수 없으며 컴파일 타임 상수를 통해 정해져야 합니다.
대신 배열과 특성이 유사한 가변 크기를 갖는 컨테이너인 vector가 있습니다.
vector는 가변 크기 배열로 생각 하시면 되며, 사용 방법 또한 거의 유사합니다. 크기를 변경하기 위한 resize()를 제공하고 있습니다.
int cnt; cin >> cnt; std::vector<int> arr(cnt);
첨언으로 C++ 표준에서 변수를 통한 배열 크기 지정을 허용하지는 않지만 몇몇 컴파일러에서 옵션을 통해 지원하고 있기는 합니다. 그리고 C 99 표준에서는 변수를 통한 배열크기 지정이 가능해졌으나, C++은 C언어의 내용을 완전히 포함하지 않아 이를 허용하지 않습니다.
-
어떤 배열이든 만드는게 목적이라면, C++이니
new
키워드로 동적할당 하시면 런타임에 변수로 크기를 지정받는 배열 생성은 가능할 겁니다.#include <iostream> int main() { int size; std::cin >> size; int *arr = new int[size]; delete[] arr; return 0; }
댓글 입력