[STL] Hash
Hash 함수 직접 구현하기
#include <iostream>
#include <string>
using namespace std;
#define MOD 23124
int Hash[MOD];
long long hash_store[MOD];
int hash_key(string str){
// 키 생성
long long key = 0;
for(int i = 0; str[i] != '\0'; i++)
key = (key << 5) + str[i] - 'a' + 1;
// 키 배치
int pos = key % MOD;
while(hash_store[pos] != 0){ // 비어있는 공간 나올때까지 탐색
if(hash_store[pos] == key) // 키를 찾은 경우 탈출
break;
pos = (pos + 1) % MOD;
}
hash_store[pos] = key;
return pos;
}
int main(){
Hash[hash_key("aaa")] = 1;
Hash[hash_key("bbb")] = 5;
Hash[hash_key("ccc")] = 10;
cout << Hash[hash_key("aaa")] << endl;
cout << Hash[hash_key("bbb")] << endl;
cout << Hash[hash_key("ccc")] << endl;
}
[참고] STL Hash
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int main(){
unordered_map<string, int> hash;
hash.insert(make_pair("aaa", 1));
hash.insert({"bbb", 2});
hash.insert(make_pair("ccc", 3));
}