본문 바로가기
프로그래밍/C || CPP

[C || CPP] C++ 배열 초기화 하는 방법 (fill_n)

by _BlankSpace 2018. 10. 14.

알고리즘 문제를 풀거나, 프로그래밍을 하다보면 배열을 사용하는 경우가 많을 것이다.

배열을 사용하면, 당연히 초기화를 해야할 것이다.


이때, 배열을 초기화하는 방법이 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문을 이용하여 배열을 초기화할 수도 있겠지만, 위에서 설명한 두 가지 방법으로 배열을 초기화 해보는 것은 어떨까 싶다.

댓글