-
[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