Programming/C++

[c++] 1차원 배열 초기화하기 (std::fill_n, std::fill)

마이구미포포 2022. 4. 18. 17:14

일반적으로 우리는 배열을 선언할때 초기화 해준다

<1차원 배열의 모든 원소 값을 0으로 설정>

- int arr[5]={};

- int arr[5]={0};

- int arr[5]={0,};

* 일부만 지정하는 경우 나머지는 모두 자동으로 0으로 설정된다
ex) int arr[3]={1,};
> 1, 0, 0
> arr[0]=1, arr[1]=0, arr[2]=0

 

<1차원 배열의 모든 원소 값을 1로 설정할 경우>

- 직접지정

int arr[5]={1, 1, 1, 1, 1};

이 방법은 원소의 개수가 적을 때만 할 수 있다

- std::fill_n() 사용

fill_n(원소 변경 시작 주소, 원소 개수, 변경 값);

fill_n()을 사용하면 간단하게 원소의 값을 변경할 수 있다

ex) fill_n(arr, 5, 1);
> arr 배열에 있는 전체 원소 5개를 모두 1의 값으로 변경한다

ex) fill_n(arr+1, 4, 1);
> arr배열의 두번째 원소부터 원소 4개를 모두 1의 값으로 변경한다

- std:;fill() 사용

fill(원소 변경 시작 주소, 원소 변경 종료 주소, 변경 값);

fill()은 fill_n()과 다르게 두번째에 변경하는 원소의 종료 주소를 넣어준다

ex) fill(arr, arr+5, 1);
> arr[0] 부터 arr[4]까지 값을 모두 1로 변경한다

ex) fill(arr+1, arr+4, 1);
> arr[1] 부터 arr[3]까지 값을 1로 변경한다 ( arr[1]=1, arr[2]=1, arr[3]=1 )

 

선언할 때 초기화했던 값을 변경하고 싶을 때 / 다른 값으로 초기화하고 싶을때 이렇게 fill_n, fill을 쓰면 편리하게 초기화할 수 있다