std::fill_n

김민수·2025년 1월 8일

C++

목록 보기
2/68

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_n과 std::fill의 차이

특징std::fillstd::fill_n
역할주어진 전체 범위를 특정 값으로 채움처음 n개의 요소를 특정 값으로 채움
시그니처std::fill(first, last, value)std::fill_n(first, n, value)
반환값없음마지막으로 채운 요소의 다음 반복자 반환
사용 용도전체 범위를 초기화할 때 사용특정 개수만 초기화할 때 사용

std::fill 예시

std::fill(vec.begin(), vec.end(), 42);  // 벡터의 모든 요소를 42로 채움

⦁ 주의 사항

  1. n이 범위를 초과할 경우
    • std::fill_n은 명시된 개수만큼 값을 채우기 때문에, 실제 컨테이너의 크기보다 큰 값을 지정하면 정의되지 않은 동작이 발생할 수 있다.
  2. 반복자 범위가 유효해야 함
    • std::fill_n은 반복자를 통해 값을 채우기 때문에, 반복자가 가리키는 범위가 유효하지 않으면 정의되지 않은 동작이 발생한다.
profile
안녕하세요

0개의 댓글