2023. 4. 26. 15:18, 알고리즘/BOJ
fill을 mask의 인자들에 대해서 true false를 손쉽게 설정하기 위해 사용하는 코드를 보았는데, 그래서 fill이 어디서부터 어디까지 어떤식으로 채워주는건지에 대해서 궁금해서 그에 대해서 검색해보았다.
-- 이때, 'start_iterator'는 채워넣기 범위에 포함되지만, 'end_iterator'는 채워넣기 범위에 포함되지 않습니다.
따라서 위 코드에서는 'mask[7]'부터 'mask[24]'까지 'true'로 채워집니다.---
라는 부분이 내가 헷갈리던 부분이고 명확하게 알고있어야 할 부분이다.
그래서 fill(mask+7,mask+25,true); 형태면,
mask+7이 시작 iterator이고, 이 건 포함이고,
mask+25가 끝 iterator이고, 이건 미포함, 만약 이게 포함이었다면 mask[25]원소에 개별 접근하는거나 마찬가지기 때문에 out of bound이니까 runtime error가 날것이다.
iterator에는 칸수 개념으로 옆으로 몇칸 갔다 라는 식으로 이해하면 딱 맞을것 같고, 그렇기 때문에 mask+7은 처음에서 옆으로 7칸, 즉 0에서 옆으로 7칸, 다시말해 mask[7]이 되는것이다.
mask+25는 옆으로 25칸, mask[25]이고, 가장 끝에는 미포함이기 때문에 결국 mask[24]까지 fill로 채우는 형태가 될것이다.
mask[24]이지만 이게 결국 bool mask[25]에서 맨 마지막 원소에 해당하는 mask[24]이라는걸 헷갈리면 안된다.
'알고리즘 > BOJ' 카테고리의 다른 글
c++ 2667번 문제 풀면서 내가 수정해야 할 사항들. (0) | 2023.04.27 |
---|---|
c++. 무조건 지역변수로 선언할때는 초기화를 해주어야 한다. 초기화를 했을때와 안했을때의 차이점. (0) | 2023.04.26 |
비내림차순과 오름차순에 관하여. 결론적으로 둘은 다르다. (0) | 2023.04.24 |
c++. 삼항연산자를 활용한 간결한 표현법. (0) | 2023.04.24 |
c++ next_permutation을 활용해서 조합을 뽑는 방법. (0) | 2023.04.24 |
Comments, Trackbacks