가끔 배열이나 벡터를 전부 초기화 해야할 일이 생긴다.

평소에 for문을 돌려서 초기했다면 fill, fiil_n을 사용해서 코드를 간결하게 만들자.

 

1) fill

template< class ForwardIt, class T >
void fill( ForwardIt first, ForwardIt last, const T& value );

 fill(초기 위치, 마지막 위치, 초기화값); (초기위치<= arr < 마지막위치)

 예제 : fill(arr,arr+5,1);

 

2) fill_n

template< class OutputIt, class Size, class T >
void fill_n( OutputIt first, Size count, const T& value );

 fill_n(초기 위치, 사이즈, 초기화값);

 예제 : fill_n(arr,5,1);

 

0으로 초기화하려면 memset(arr, 0, sizeof(arr)); 이 제일 좋다.

그러나, fill, fill_n을 써도 문제 없다.

그리고 2차원 이상의 배열의 경우 fill_n은 1차원으로 인식하는 문제가 있으므로 fill을 사용하는 습관을 들이자.

 예제 : fill(&arr[0][0], &arr[5][3], 7);

 

 

결론 : fill 마스터하자

'C++ STL' 카테고리의 다른 글

[C++][STL] set과 unordered_set의 차이  (0) 2021.11.11
[C++][STL] Hash Set  (0) 2021.10.21
[C++][STL] sort  (0) 2021.10.04
[C++][STL] tuple, tie  (0) 2021.09.26
[C++][STL] Queue  (0) 2021.09.26

+ Recent posts