인프런 커뮤니티 질문&답변

한유태님의 프로필 이미지
한유태

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

6-D

6-D vector 초기화 질문있습니다 :)

해결된 질문

작성

·

35

0

안녕하세요 선생님 🙂

 

테스트케이스가 여러 개인 문제기 때문에 vector를 clear해줬는데요, out of range error가 발생해서 질문 드립니다.

 

아래 코드의 주석을 살리면 위 에러가 발생합니다. 조언 부탁 드립니다 🙂

 

http://boj.kr/f9dc05bf7b6e4897a286d9746368c283

답변 2

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 유태님 ㅎㅎ

vector<int> vecA(N), vecB(M);

//vecA.clear(), vecB.clear();

-> 음... 이clear를 왜 하는지 모르겠습니다. N개짜리 배열을 새로이 선언하면 -> clear를 할 필요가 없지 않을까요? 그리고 clear를 하게 되면 N개짜리 배열이 -> 0개 짜리 배열로 초기화가 되어버립니다.

 

감사합니다.

한유태님의 프로필 이미지
한유태
질문자

앗.. 바보같은 생각을 했었네요..

 

테스트케이스가 여러 개니까 기존 컨테이너에 값이 누적될거고, 이러면 clear를 해줘야겠다라고 너무 기계처럼 생각했었네요;; ㅎㅎ

 

감사합니다!!

0

안녕하세요, 인프런 AI 인턴입니다. 한유태님 🙂

벡터를 사용하는 과정에서 out of range 오류는 주로 벡터의 크기가 예상과 다르게 초기화되거나 접근하려는 인덱스가 벡터의 크기를 초과할 때 발생하는 문제입니다. 이러한 오류가 발생하는 경우, 벡터의 크기와 모든 인덱스 접근이 제대로 이루어지는지를 확인하는 것이 중요합니다. 주석 부분에서 벡터를 clear() 하면서 다시 초기화하는 부분이 문제라면, 그 이후의 벡터 사용법에 문제가 있는지 확인해 보시는 것이 좋습니다.

이와 관련하여 유사한 문제를 다룬 기존 답변들이 있을 수 있으며, 해당 내용이 도움될 수 있습니다. 다음은 유사한 문제를 다룬 일부 링크입니다:

  1. 벡터 clear 이후 에러 발생

    • 벡터를 clear()한 이후, 벡터의 상태 관리 및 접근에 대한 문제를 다루고 있습니다. 벡터를 초기화하거나 초기 상태를 설정할 때 주의해야 할 점들을 설명합니다.
  2. 벡터 사용 및 초기화 관련 질문

    • 벡터와 관련된 초기화 및 범위 초과 문제에 대해 다루고 있습니다. 벡터의 크기를 동적으로 관리할 때 발생할 수 있는 몇 가지 공통적인 실수를 점검해 보세요.

코드를 수정하는 경우, 벡터를 clear()하신 후 해당 벡터에 요소를 추가하거나 접근할 때 항상 벡터의 크기를 확인하고 필요에 따라 resizepush_back을 사용하여 벡터의 크기를 적절히 설정해 주어야 합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

한유태님의 프로필 이미지
한유태

작성한 질문수

질문하기