if(s.find(s_num)!=s.end()){
s.erase(s_num);
s[s_num]=i;
}
일단 unordered_map을 이용한 풀이에서, unordered_map 내에 그 원소가 있는 경우라면, 위와 같은 형태로
if(s.find(s_num)!=s.end()) 형태로 if문을 통해서 경우를 나누어서 코드를 작성하는데,
왜 s.fin(s_num)!=s.end()) 처럼, s.end()를 이용하여서 판단하는지에 대해서 궁금하여서 검색해보았다.
검색해본 내용을 보면, unordred_map에 있는 find() 함수의 경우는 원소가 있다면 그 iterator를, 없다면
unordered_map의 end()를 가리키는 반복자를 반환한다고 한다.
그래서 만약 find()를 통해 원소를 발견했다면, 그건 end()가 아닐테니 !=end() 형태로 코드를 작성해서 그 원소가 있는 경우를 나타낼 수 있는 것이다.
앞으로 unordered_map을 사용한 문제들을 많이 풀어볼텐데, 그 원소가 있는 경우를 나타내기 위해서는 위와 같은 형태의 코드를 잘 이해하고 활용하도록 하자.
그리고 이 문제를 푸는데 같이 접하게된 내용으로,
int en=min(k,(int)slist.size()); 형태의 코드를 접하게 되었는데,
처음에는 unsigned int를 반환하니까 그냥 맞추어주려고 (int)를 사용하고, (int)를 사용하지 않더라도 코드는 실행될 것이라고 생각하였는데, 막상 (int) 없이 코드를 작성해보니까 에러메세지를 받을 수 있었다
아무래도 min() 함수 자체가 (int, size_t) 형태로는 받아들일 수 없게 구현이 되어있는것으로 보여진다.
그래서 혹시 앞으로도 int와 size()함수의 값을 비교해야 하는 min, 혹은 max의 경우라면,
size()함수의 값 앞에 (int)를 붙여주어서 타입을 맞추어 주도록 하자.
위 사항의 경우 다음에 다시 접하면 또 다시 정리해보면서 기억하고 익숙해 지도록 하자.
'알고리즘 > BOJ' 카테고리의 다른 글
boj 11478번 문제를 통해 접하게 된 substr() 함수와 그 함수의 활용에 관하여. (0) | 2023.06.22 |
---|---|
boj 16165번 문제를 통해 배우게된 unordered_map을 마치 중복을 허용하는 듯하게 사용하는 방법. (0) | 2023.06.21 |
boj 7785번 문제를 통해 접하게된 unordered_set과 sort에 관하여. (0) | 2023.06.20 |
boj 22862번 문제를 통해 접하게된 짝수일때, 홀수일때 수를 경우의 수를 더하는 방법에 대하여. (0) | 2023.06.18 |
boj 2003번 수들의 합 2 문제를 풀다가 접하게된 zsh: bus error 와 옳바른 코드 형태에 관하여. (0) | 2023.06.17 |