https://www.acmicpc.net/problem/17219
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
unordered_map<string, string> memo;
int n, m;
cin >> n >> m;
for(int i=0; i<n; i++) {
string site;
string password;
cin >> site >> password;
memo[site] = password;
}
for(int i=0; i<m; i++) {
string siteToFind;
cin >> siteToFind;
cout << memo[siteToFind] << '\n';
}
return 0;
}
key-vlaue 쌍을 저장하는 데이터 구조
검색, 삽입, 삭제가 모두 평균 O(1)의 시간 복잡도를 가짐 !!
C++에서 해시테이블은 unordered_map을 통해 사용가능
#include <unordered_map>
// key와 value의 타입 지정
unordered_map <string, string> um;
empty( )
size( )
operator[ ]
find( key )
count( key )
insert( {key, value} )
erase( key )
clear( )
1. key-value 생성
2. find()의 사용
find
맵에서 key를 검색하고, 해당 key가 존재하면 해당 원소를 가리키는 iterator를 반환. key가 존재하지 않으면 um.end()를 반환.
auto tmp = um.find("key");
if (tmp != um.end()) {
//존재
cout << "key: " << tmp->first << '\n';
cout << "value: " << tmp->second;
} else {
// 존재하지 않음
cout << "not found";
}
tmp -> first == key
tmp -> second == value
3. key에 대한 value 직접 접근