일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SWEA
- SECS-II
- linux
- spring boot
- 회원가입
- python
- c
- SECS/GEM
- 백준
- Spotify Api
- 스포티파이
- Gem
- spotify
- 프로그래머스
- java
- Spring JPA
- 자바
- CS
- C++
- SECS
- programmers
- modern c++
- Spring
- 파이썬
- MYSQL
- Computer Science
- regression
- Baekjoon
- 회귀
- SW Expert Academy
Archives
- Today
- Total
비버놀로지
[Modern C++] Predefined Functor 본문
728x90
Predefined Functor
comparision operator
- set, map, priority_queue 에서 default로 less 사용
- unorderd_set, unordered_map에서 default로 equal_to 사용
- data type에 각각 operator==, operator<, operator>가 정의되어 있어야 한다.
1. equal_to
template<class T>
struct equal_to {
bool operator() (const T& lhs, const T& rhs) const {
return lhs == rhs;
}
}
2. less
template <class T>
struct less {
bool operator() (const T& lhs, const T& rhs) const {
return lhs < rhs ;
}
}
3. greater
template <class T>
struct greater {
bool operator() (const T& lhs, const T& rhs) const {
return lhs > rhs ;
}
}
형태
1. less< T > : class
2. less< T>() : function less()(1,1) = false less()(1,2) = true
3. less< T>{} : function less{}(1,1) = false less{}(1,2) = true
hash
- Requirement
- key값에 대해 size_t type의 hash 값을 반환한다.
- (size_t == unsigned long long)
- k1, k2가 같다면 hash<key>(k1) == hash<key>(k2) 이어야 한다.
- k1, k2가 다르다면 hash<key>(k1) == hash<key>(k2)인 확률이 매우 적어야 한다.
- specialization 되어 있는 type
- 기본 primitive type (int, long long, char, bool, double, float, ...)
- string
※ specialization : 특정 data type에 대해 별도의 동작을 정의해준다. 즉, 각 type 특성에 맞게 hash function 이 적절히 구현되어 있다.
※key 값을 받아, hash value를 반환한다.
struct hash {
size_t operator()(const Key &key) const{
return (hash value);
}
};
728x90
'LANGUAGE STUDY > C C++' 카테고리의 다른 글
[Modern C++] lambda (0) | 2023.01.17 |
---|---|
[Modern C++] Operator Overloading(연산자 오버로딩) (0) | 2023.01.17 |
[Modern C++] Operator (0) | 2023.01.17 |
[Modern C++] mem function (0) | 2023.01.16 |
[Modern C++] Initializer list 초기화 리스트 (0) | 2023.01.16 |
Comments