프로그래밍/C || CPP
[C || CPP] C++ 배열 초기화 하는 방법 (fill_n)
_BlankSpace
2018. 10. 14. 23:02
알고리즘 문제를 풀거나, 프로그래밍을 하다보면 배열을 사용하는 경우가 많을 것이다.
배열을 사용하면, 당연히 초기화를 해야할 것이다.
이때, 배열을 초기화하는 방법이 C과 C++이 약간은 다르다고 할 수 있다. (혹시, 내용이 잘못되었다면 댓글 부탁 드립니다.)
간단하게, 정수형 배열을 C와 C++에서 어떻게 다른 지 예제로 확인해보자.
먼저, 간단한 배열이라면 아래처럼 초기화할 수 있다.
1 | int arr[10] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; | cs |
위의 경우는 정말 간단한 배열일 때나 가능할 것이다. 언제 초기화 할지..
물론, for문으로 반복해서 초기화 하는 방법도 있겠지만, 더욱 간단한 방법을 찾아보자.
먼저, GCC를 사용할 때는 다음과 같은 방법을 사용할 수 있을 것이다.
1 2 3 4 5 6 7 8 | #include <stdio.h> int main(void) { int arr[100] = { [0 ... 99] = -1 }; for (int i=0; i<100; i++) { printf("%d ", arr[i]); } return 0; } | cs |
1 | int arr[100] = { [0 ... 99] = -1 }; | cs |
위의 내용처럼, ["초기 값" ... "마지막 값"] = "입력하고자 하는 값" 으로 배열을 초기화할 수 있다.
C++에서는 다음과 같은 함수를 사용할 수 있다.
1 2 3 4 5 6 7 8 9 | #include <iostream> int main(void) { int arr[100]; std::fill_n(arr, 100, -1); for (int i=0; i<100; i++) { std::cout << arr[i] << " "; } return 0; } | cs |
1 | std::fill_n(초기화 하려는 배열 이름, 배열의 자리수, 초기화 하려는 값); | cs |
C++ 에서는 배열을 위의 함수를 사용하여 배열을 초기화할 수 있다.
배열을 초기화할 때 for문을 이용하여 배열을 초기화할 수도 있겠지만, 위에서 설명한 두 가지 방법으로 배열을 초기화 해보는 것은 어떨까 싶다.