std::fill_n은 <algorithm> 헤더에 정의된 함수로, 주어진 범위에서 처음 n개의 요소를 특정 값으로 채우는 작업을 수행한다. 특정 범위를 초기화하거나 값을 일괄적으로 변경할 때 사용할 수 있다.
template <class OutputIterator, class Size, class T>
OutputIterator fill_n(OutputIterator first, Size n, const T& value);
first : 값을 채우기 시작할 반복자n : 채울 요소의 개수value : 채울 값기본 사용
#include <algorithm>
int main() {
std::vector<int> vec(10);
// 벡터의 처음 5개 요소를 42로 채움
std::fill_n(vec.begin(), 5, 42);
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
출력:
42 42 42 42 42 0 0 0 0 0
| 특징 | std::fill | std::fill_n |
|---|---|---|
| 역할 | 주어진 전체 범위를 특정 값으로 채움 | 처음 n개의 요소를 특정 값으로 채움 |
| 시그니처 | std::fill(first, last, value) | std::fill_n(first, n, value) |
| 반환값 | 없음 | 마지막으로 채운 요소의 다음 반복자 반환 |
| 사용 용도 | 전체 범위를 초기화할 때 사용 | 특정 개수만 초기화할 때 사용 |
std::fill 예시
std::fill(vec.begin(), vec.end(), 42); // 벡터의 모든 요소를 42로 채움
n이 범위를 초과할 경우 std::fill_n은 명시된 개수만큼 값을 채우기 때문에, 실제 컨테이너의 크기보다 큰 값을 지정하면 정의되지 않은 동작이 발생할 수 있다.std::fill_n은 반복자를 통해 값을 채우기 때문에, 반복자가 가리키는 범위가 유효하지 않으면 정의되지 않은 동작이 발생한다.