C++

fill vs fill_n vs memset

(ꐦ •᷄ࡇ•᷅) 2025. 1. 20. 11:16

1. std::fill

특정 값으로 지정된 범위 전체를 채운다.

std::fill(first, last, value);

 

  • first, last: 값을 채울 범위의 시작과 끝을 나타내는 반복자.
  • value: 채울 값.

 

2. std::fill_n

반복자 시점에서 지정된 개수만큼 값을 채운다. 채울 요소의 개수가 명확히 정해져 있을 때 유용하다.

std::fill_n(first, n, value);

 

  • first: 채우기 시작할 반복자.
  • n: 값을 채울 요소의 개수.
  • value: 채울 값.

 

3. std::memset

메모리 블록을 특정 바이트 값으로 채운다. 원시 배열이나 메모리 버퍼를 초기화하거나 메모리를 지울 때 사용한다. 메모리를 바이트 단위로만 다루기 때문에 조심히 사용해야 한다.

std::memset(ptr, value, num);

 

  • ptr: 메모리 블록의 시작 주소
  • value: 채울 바이트 값 (주로 0 또는 특정 문자 값).
  • num: 채울 바이트 수

 

타입 안정성이 중요한 코드에서는 std::fill이나 std::fill_n을 사용하는 것이 좋다.