ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C/C++] 특정 값으로 배열 초기화 방법
    Programming/C++ 2021. 1. 20. 16:08

     

    백준을 풀다가 정적으로 생성한 배열의 인덱스를 모두 -1로 초기화해야되는 상황이 있었다.

    그래서 평범하게 위와 같이 초기화를 시켜줬는데 이렇게 했더니 모두 -1로 초기화되지 않고 맨 앞 인덱스를 제외하고 0으로 초기화가 되었다.

    	int index[MAX_ALPHABET_COUNT] = { -1, };

    아무래도 지금까지 0말고 다른 수로 배열을 초기화할 일이 없어서 잘못 이해하고 있었던 것이다.

    일반적으로 clang의 배열초기화는 = {0,}으로 하면 초기화가 된다고 하는데, 이는 첫번째 인덱스와, 0으로 모두 초기화를 할때만 해당되고 특정 값으로 초기화 할때의 방법이 아니였던 것 같다...

     

     따라서 결론적으로 특정값 포함해서 초기화를 하는 방법은 아래와 같은 방법이 있다.

     

    for문으로 전부 순회하면서 값을 초기화 하는 방법

    	for (size_t i = 0; i < MAX_ALPHABET_COUNT; i++)
    	{
    		index[i] = -1;
    	}

     

    memset함수를 통해서 값을 초기화 하는 방법

    - 이 방법은 빠르고 안정적이기 때문에 많이 사용을 한다고 합니다

    memset(index, -1, sizeof(int) * MAX_ALPHABET_COUNT);

     

    std::fill_n 를 통한 초기화

    - 이건 C++ 방식이라고 한다

    std::fill_n(index, MAX_ALPHABET_COUNT, -1);

    이것말고도 다른 방식들도 존재하고 있다.

     

    이런 부분은 그대로 넘어가면 나중에 또 실수할 것 같아서 정리를 해봤다 ^W^

    'Programming > C++' 카테고리의 다른 글

    class 와 struct 에 대해서  (0) 2020.12.20
Designed by Tistory.