본문 바로가기
C,C++

[C++, STL] <algorithm> std::fill 함수 사용하기 (feat. std::vector, 1차원 배열, 2차원 배열 초기화)

by matters_ 2019. 9. 25.

std::fill 

1
2
template <class ForwardIterator, class T>
  void fill (ForwardIterator first, ForwardIterator last, const T& val);
cs
  • <algorithm> 헤더파일에 저장되어 있다.
  • 값으로 범위(first, last)를 채우는 역할을 하는 함수이다.

 

인자 (Parameters)

  • first, last
    • val의 값으로 채울 범위를 나타내는 반복자들 [first, last)범위에 값이 채워지게 된다. first는 포함하지만 last는 포함하지 않는다.
  •  val
    • 범위에 채울 값

리턴값 (return value)

  • 없다.

예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// fill algorithm example
#include <iostream>     // std::cout
#include <algorithm>    // std::fill
#include <vector>       // std::vector
 
int main() {
 
 
    // vector
 
    std::vector<int> myvector(8);
    // myvector: 0 0 0 0 0 0 0 0
 
    std::fill(myvector.begin(), myvector.begin() + 45);
    // myvector: 5 5 5 5 0 0 0 0
 
    std::fill(myvector.begin() + 3, myvector.end() - 28);
    // myvector: 5 5 5 8 8 8 0 0
 
    std::cout << "myvector contains:";
    for (std::vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)
        std::cout << ' ' << *it;
    std::cout << '\n';
 
 
    // array
 
    int myarray[8= { 0, };
    //myarray: 0 0 0 0 0 0 0 0
 
    std::fill(myarray, myarray + 47);
    //myarray: 7 7 7 7 0 0 0 0
 
    std::fill(myarray + 3, myarray + sizeof(myarray) / sizeof(int- 12);
    //myarray: 7 7 7 2 2 2 2 0
 
    printf("myarray contains :");
    for (int i = 0; i < sizeof(myarray) / sizeof(int); i++)
        printf(" %d", myarray[i]);
    printf("\n");
 
 
    // 2D array
 
    int my2darray[2][8= { 0, };
    //my2darray: {{0 0 0 0 0 0 0 0},  {0 0 0 0 0 0 0 0}}
 
    std::fill(my2darray[0+ 4 , my2darray[0+ 8 + 6 , 3);
    //my2darray: {{0 0 0 0 3 3 3 3},  {3 3 3 3 3 3 0 0}}
 
    std::fill(my2darray[0+ 7, my2darray[0+ 8 + 1 , 2);
    //my2darray: {{0 0 0 0 3 3 3 2},  {2 3 3 3 3 3 0 0}}
 
    printf("my2darray contains :");
    for (int i = 0; i < sizeof(my2darray) / sizeof(my2darray[0]); i++)
        for (int j = 0; j < sizeof(my2darray[0]) / sizeof(int); j++)
            printf(" %d", my2darray[i][j]);
    printf("\n");
 
    return 0;
 
}
cs

복잡도 (Complexity)

  • 각 원소에 값을 할당하므로 [first,last) 만큼 걸린다.

Reference

 

댓글