2016-06-12 3 views
-4

0을 읽을 때까지 사용자 입력에서 숫자 문자열을 읽는 프로그램을 작성해야합니다. 예를 들어 도입 된 값이 1, 2, 3, 0이면 배열 X는 1, 2 및 3을 포함하고 배열 크기는 3이 될 것입니다. 삽입 된 값의 수에 대한 제한이 없으며 모든 크기의 배열을 선언 할 수 없으므로 더 많은 int 값을 보유 할 수 있도록 배열의 크기를 동적으로 늘릴 수있는 방법이 있습니다. 그들이 읽히는 동안?크기를 모른 채 배열을 선언하는 방법은 무엇입니까? C++

+0

그냥 궁금해서 : 왜 사람들 이이 질문을 downvoting입니까? 가장 구체적이거나 구체적인 것은 아니지만 큰 문제가있는 것은 아닙니다. – jtbandes

+1

@jtbandes 아마도 대부분의 사람들은 OP 측면에서 이루어진 연구 노력 (코드에서 시도하지 않은 경우)을보고 싶어합니다. 스택 오버플로 및 Google에서이 주제와 관련된 많은 정보를 얻을 수 있습니다. –

+0

Google "C++ 가변 길이 배열"을 사용하면 처음 몇 가지 결과가 실제로 OP가 원하는 것은 아닌 VLA (자연스럽게)에 관한 것입니다. 나는 당신이 당신이 찾고있는 것을 모를 경우 이것을 알아내는 것이 조금 어려울 수도 있음을 이해할 수 있습니다 *. – jtbandes

답변

6

가변 길이 컬렉션에 요소를 추가 할 수있는 std::vector을 사용할 수 있습니다. 필요할 때 자동으로 재 할당을 관리합니다. 예 :

std::vector<int> values; 
values.push_back(0); 
values.push_back(1); 
... 
+0

그래서 첫 번째 숫자를 읽은 후에는 values.push_back (1); 배열 크기를 늘린 것이 맞습니까? –

+0

'push_back'을 사용하여 값을 삽입 할 수 있으며, 배열의 크기에 대해 전혀 염려 할 필요가 없습니다. 삽입 한 요소를 보유하기 위해 필요에 따라 자동으로 메모리를 할당합니다. – jtbandes

3

std::vector을 사용할 수 있습니다. push_back 요소처럼 동적으로 커집니다.

2

동적 메모리 할당 검사 또 다른 질문 here

라고하지만 일반적으로 나는 vector

#include <vector> 

using namespace std; 
int main(){ 
    vector<int> v; 
    int x; 
    while(cin>>x && x != 0){ 
     v.push_back(x); 
    } 
} 

당신은 vector 클래스는 동적 메모리 할당을 구현하여 존재한다는 것을주의해야한다 사용하십시오. 그것은 단지 당신을 위해 거기에 할당 된 메모리를 예약하고 파괴 같은 모든 노력을 할 필요가 없습니다 ...

관련 문제