백준/이걸 몰랐네

배열을 fill()로 초기화해주자.

발전생 2020. 8. 31. 14:01

전역변수에 배열을 선언하면 알고리즘 문제를 풀 때 편한 건 분명하다.

어느 함수에서든 배열을 가져다 쓸 수 있기 때문이다.

 

그런데 이걸 도입하고서 초반부에 디버깅에 어려움을 겪게 한 일이 있다.

main 위에

int arr[101] = {-1};

이렇게 코드를 작성했다. 이렇게 하면 당연히 모든 값이 -1로 초기화될 줄 알았다.

그런데 계속 이상한 값이 출력돼서 디버깅 해보니 배열의 첫 원소만 -1이고 나머지는 모두 0이었다.

그래서 프로그램이 의도치 않게 작동했다.

 


결론

 

  • 배열의 모든 값들을 0으로 초기화하려 한다면 ={0,}으로도 가능하다.
  • 배열의 모든 값들을 0이 아닌 다른 값들로 초기화하고자 하면 <algorithm>에 있는 std::fill()을 사용해 배열의 값들을 초기화하자.