블로그는 나의 힘!

fill_n : 설정한 값으로 시퀀스 할당 하기.

#include <algorithm>
template <class OutputIterator, class Size, class T>
OutputIterator fill_n (OutputIterator first, Size n, const T& val)
{
     while(n > 0)
     {
          *first = val;
          ++first;
          --n;
     }
     return first;     // since C++11
}

first에 설정한 오브젝트에 N의 사이즈 만큼 Val에 설정한 값으로 할당 한다.
대체적으로 배열 초기화시 원하는 값으로 초기화 할때 사용 하는 STL 이다.


const int ARRAY_MAX_SIZE = 10;
int nArrayValue[ARRAY_MAX_SIZE] = { 0, };
int nFillValue = 255;

// nArrayValue 배열 10개의 int 값을 255로 할당한다.
std::fill_n( nArrayValue, ARRAY_MAX_SIZE, nFillValue );





그 외, 
fill 도 있다.

#include <algorithm>
template <class ForwardIterator, class T>
void fill (ForwardIterator first, ForwardIterator last, const T& val)
{
     while (first != last)
     {
          *first = val;
          ++first;
     }
}

first에 오브젝트 처음 인덱스, last에 오브젝트 마지막 인덱스를 설정하고 Val에 값을 할당한다.


vector<int> vecFillList;
vecFillList.push_back( 1 );
vecFillList.push_back( 2 );
vecFillList.push_back( 3 );
vecFillList.push_back( 4 );
vecFillList.push_back( 5 );

int nFillValue = 255;

// vecFillList에 사이즈 만큼 255로 할당한다.
std::fill( vecFillList.begin(), vecFillList.end(), nFillValue );

// 사이즈를 임의로 설정하여 할당도 가능.
std::fill( vecFillList.begin() + 2, vecFillList.end(), nFillValue );

 

 

 

참조 :
   cplusplus.com/reference/algorithm/fill

   cplusplus.com/reference/algorithm/fill_n

 

'[ Programing ] > STL & Booster' 카테고리의 다른 글

boost::thread_group  (0) 2023.06.26
C++ STL mutex  (0) 2022.01.21
C++ STL Function  (0) 2020.09.14
C++ stl numeric_limits  (0) 2020.06.10
C++17. STL variant  (0) 2020.06.08
Posted by Mister_Q