msm1029   3년 전

첫 줄에 행의 크기가 입력되고

각 행마다 숫자들이 공백이 포함돼서 입력되는데요

6

1 2 3

4 5

7

12 32

1 6 7 8 9

5 6

이렇게요

이 숫자들을 행 별로 정수로 바꿔서 이차원 벡터에 넣고 출력하고싶은데

벡터 범위에서 오류가 뜨네요ㅠㅠ 초기화를 어떻게 해야되는지..

어떤 부분을 고치면 해결될까요?

djm03178   3년 전

vector<vector<int>>에서 안쪽에 있는 vector<int>를 A라고 치환해 봅시다. 그러면 task는 vector<A> 형입니다.

단순히 선언만 했을 때에는 task의 크기가 0이기 때문에 task[0]에조차 접근할 수 없습니다. 크기를 늘리기 위해서는 생성 시에 크기를 지정해 주거나, resize로 크기를 늘리거나, 아니면 push_back으로 원소를 추가해야 합니다.

35번째 줄은 이렇게 task 자체의 크기를 늘리는 과정 없이 task[i]에 접근하고 있기 때문에 문제가 됩니다.

msm1029   3년 전

감사합니다!

28번 라인에

for (int i = 0; i < n; i++) {

   vector init(0);

   task.push_back(init);

}

를 추가해줬더니 오류는 안뜹니다. 근데

6

1 2 3

4 5

7

을 입력한 순간 프로그램이 종료됩니다 아무래도 초기화가 6까지밖에 안돼서 그런거같은데

그럼 몇까지 초기화를 해야 저 알 수 없는 크기의 배열들을 다 입력 받을 수 있을까요..?

djm03178   3년 전

31번째 줄은 한 줄을 통째로 입력받지 않고, 화이트스페이스 단위로 끊어서 입력받기 때문에 그렇습니다. getline에 대해 알아보세요.

msm1029   3년 전

성공했습니다!!!

진짜 단순하게 알려주셔도 그 안에 살이 있네요

감사합니다

댓글을 작성하려면 로그인해야 합니다.