최대 1 분 소요

개요

hash()가 추가되어 각 타입별로 데이터의 해시값(Digest)을 구할 수 있습니다.

  1. 리턴되는 해시값(Digest)size_t 입니다.(4byte보다 크거나 같으며, int와 동일한 크기입니다.)
  2. 동일한 데이터는 동일한 해시값(Digest)이 나와야 합니다.
  3. 서로 다른 데이터라도 해시값(Digest)은 충돌될 수 있습니다. 확률적으로는 1.0 / std::numeric_limits<std::size_t>::max() 입니다.

STL 에서는 bool, int등의 기본 타입과 string등의 STL 타입에 대해 모두 정의되어 있어 이를 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int a{1};
int b{1};
int c{2};

size_t hashA{std::hash<int>{}(a)};
size_t hashB{std::hash<int>{}(b)};
size_t hashC{std::hash<int>{}(c)};

EXPECT_TRUE(hashA == hashB); // 같은 값은 해시값도 같습니다.
EXPECT_TRUE(hashA != hashC); // 다른값은 해시값도 다릅니다.

std::string str1{"Hello"};
std::string str2{"Hello"};
std::string str3{"Hi"};

size_t hashStr1{std::hash<std::string>{}(str1)};
size_t hashStr2{std::hash<std::string>{}(str2)};
size_t hashStr3{std::hash<std::string>{}(str3)};

EXPECT_TRUE(hashStr1 == hashStr2); // 같은 값은 해시값도 같습니다.
EXPECT_TRUE(hashStr1 != hashStr3); // 다른값은 해시값도 다릅니다.

hash()해시 컨테이너에서 사용될 수 있고요, 자세한 사용 방법은 unordered_map, unordered_multimap, unordered_set, unordered_multiset을 참고하시기 바랍니다.

태그:

카테고리:

업데이트:

댓글남기기