0x09강-BFS. fill문을 통한 배열 내의 원소들의 값 변경하기.

dist[100002]의 값을 모두 -1로 바꿀때, fill 함수를 사용하게 되는데, 

이때의 활용을 보면, 

 

fill(dist,dist+100001,-1)로 작성해서 사용하게 된다면, 어디서부터 어디까지 채워지는지에 대해서 정확하게 알고싶어서 

더 작은 규모로 확인해보았다. 

#include <bits/stdc++.h>
using namespace std;

int dist[12];
int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    fill(dist,dist+11,-1);
    for(int i=0;i<12;i++){
        cout<<i<<' '<<dist[i]<<'\n';
    }
}

이렇게 작성했을때, 0부터 11까지 12개의 배열의 원소를 출력할것이고, 그때에 fill(dist,dist+11,-1)로 작성하여서, 

어디까지 -1을 입혀주는지 확인해보니,

출력의 결과는 이런식으로 11번째 원소까지 작성되고, 12번째 원소는 -1이 되지 않고 그대로 전역변수로 작성할때 들어간 0으로 남아있다. 

cplusplus 사이트에서 fill을 검색해보면 [first,last)로써, 첫번째는 포함, 마지막은 미포함 관계라는걸 알수 있다. 

그러니까 dist첫번째는 포함, dist+11은 불포함, 그러면 dist+10까지 포함인 상태이고, 이걸 해석하자면 +11을 채우는 원소의 갯수라고 생각해도 같은 해답을 얻을 수 있다. 

dist부터 dist+10까지 채우는 것이고, 그게 dsit+11에서 11개를 채우는 것이라고 생각해도 같은 값이 된다. 

헷갈릴 수있는데 그럴때마다 다시 한번 검색해보고 생각해보면서 익숙해질때까지 반복해보도록 하자. 

 

  Comments,     Trackbacks