본문 바로가기
알고리즘 문제풀이/개념정리

[개념정리] 배열의 초기화 - fill

by 로디네로 2021. 4. 24.
반응형

 

서론 : 

 

보통 배열을 초기화 하고자 할때는 보통 아래와 같은 방법을 사용한다.

 

  1. 선언과 동시에 초기화
  2. memset으로 초기화
  3. 값을 직접 넣어주어 초기화

 

아래는 사용 예시이다.

 

 

1. 선언과 동시에 0으로 초기화

int map[10][10] = {0,};

 

2. memset 으로 초기화

memset(arr, Flase, sizeof(arr));

 

3. 선언과 동시에 값을 직접 넣어주어 초기화

int map[2][2] = {
    {1,2},
    {3,4}
};

 


 

 

하지만 예를들어 5로 초기화하고 싶다하면 어떤 방법을 써야될까?

 

우선 선언하면서 값을 모두 넣어줄 수 있을 것이다.

 

int map[2][2] = {
    {5,5},
    {5,5}
};

 

하지만 2x2 배열이 아니고 100x100 배열이라면 이렇게 모두 넣어주기는 힘들것이다.

 

그렇다면 for문을 사용할 수 있을 것이다.

 

for(int i=0; i<100; i++){
    for(int j=0; j<100; j++
        map[i][j]=5;
    }
}

 

번거롭고 for문으로 시간을 뺏기기는 싫다..

 

그러나 memset은 bool형 데이터에만 사용가능하다. 즉 0으로 초기화할때나 쓸수 있다는 얘기

 

 


 

 

std::fill

헤더 : 

<algorithm>

 

fill 함수를 통해 한번에 원하는 값을 집어넣어 줄 수 있다.

 

우선 선언을 해준다.

int map[100][100] = {0,};

 

현재 0으로 초기화 되어있는 배열을 5로 초기화해주고자 한다.

fill(시작주소,끝나는주소,초기화값)

 

- 1차원 배열

fill(arr, arr+10, 5);

 

- 2차원 배열

fill(&map[0][0], &map[ROW -1][COL], 5)

 

- 백터

fill (v.begin(), v.end(), 5);

 

이와 같이 fill로 배열, 벡터를 초기화 해 줄 수 있었다.

반응형

댓글