C++ named requirements: Hash (since C++11)
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hash 는 출력이 입력에만 의존하며, 서로 다른 입력값이 주어졌을 때 동일한 출력을 생성할 확률이 매우 낮은 함수 객체입니다.
요구사항
타입
T
가 다음 조건을 만족하면
Hash
를 만족합니다
-
타입
T는 FunctionObject , CopyConstructible , Destructible 를 만족하며,
주어진
-
h
,
T또는const T타입의 값으로, 인자 타입이Key인, -
k
,
Key또는 const Key 으로 변환 가능한 타입의 값, -
u
,
Key타입의 lvalue 표현식.
다음 표현식들은 유효해야 하며 지정된 효과를 가져야 합니다.
| 표현식 | 반환 타입 | 요구 사항 |
|---|---|---|
| h ( k ) | std::size_t |
반환된 값은 프로그램 실행 기간 동안
k
의 값에만 의존합니다.
동일한 프로그램 실행 내에서 수행되는 모든 h ( k ) 평가는 동일한 k 값에 대해 동일한 결과를 생성합니다. a ! = b 인 경우 h ( a ) == h ( b ) 일 확률은 1.0 / std:: numeric_limits < std:: size_t > :: max ( ) 에 접근해야 합니다. |
| h ( u ) | std::size_t | u 는 수정되지 않습니다. |
표준 라이브러리
|
(C++11)
|
해시 함수 객체
(클래스 템플릿) |
결함 보고서
다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 2291 | C++11 | 모든 경우에 동일한 인수에 대해 동일한 결과가 요구됨 | 단일 실행 내에서만 요구됨 |