2023. 2. 24. 18:02, 알고리즘/BOJ
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개를 채우는 것이라고 생각해도 같은 값이 된다.
헷갈릴 수있는데 그럴때마다 다시 한번 검색해보고 생각해보면서 익숙해질때까지 반복해보도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
0x0B-재귀. 재귀에서 비트쉬프트 연산자를 활용해서 2의 거듭제곱을 나타내는 부분. (0) | 2023.02.25 |
---|---|
0x0B-재귀. 함수의 반환 형식에 따라서 return을 통한 함수의 종료에서 넣어주는 값이 다르다. (0) | 2023.02.24 |
0x09-BFS. for문의 실행에서 순차적 수의 변화가 아닐때의 for문의 활용 (0) | 2023.02.24 |
0x09강-BFS. 전처리기를 쓸때 ; 를 입력해버리면 오류를 찾기 어렵다. 습관적으로 전처리기에 ;를 붙이지않도록 하자. (0) | 2023.02.23 |
0x08강-스택의 활용. getline(cin, a); 의 활용에 대해서 익숙해지자. (0) | 2023.02.22 |
Comments, Trackbacks