#include <unordered_map>
key-value형태로 값을 저장하는 컨테이너이다.
template < class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>, class Alloc = allocator< pair<const Key,T> > class unordered_map;
Key
: key의 타입 (= unordered_map::key_type)
T
: value의 타입 (= unordered_map::mapped_type) (=/= unordered_map::value_type)
Hash
: size_t타입의 고유한 값을 리턴할 해쉬 값 (= unordered_map::hasher)
, hash가 기본값이다.
Pred
: key값을 비교할 binary predicate이다.(= unordered_map::key_equal)
Alloc
: allocator object의 타입.
기본값은 가장 단순한 memory allocation model을 정의하고 값에 독립적인 allocator class template를 사용한다.(= unordered_map::allocator_type)
(unordered_map::value_type은 key와 value의 pair을 정의한 것이다.)
typedef pair<const Key, T> value_type;
unordered_map<Key,T>::iterator it;
(*it).first; // = it->first;
(*it).second; // = it->second;
(*it); // the "element value" (of type pair<const Key,T>)
Element lookup
iterator find ( const key_type& k );const_iterator find ( const key_type& k ) const;
size_type count ( const key_type& k ) const;
Modifiers
template <class... Args>pair<iterator, bool> emplace ( Args&&... args );
key가 이미 존재하는 경우가 아니면 insert한다.example >>
#include <iostream>
#include <string>
#include <unordered_map>
int main ()
{
std::unordered_map<std::string,std::string> mymap;
mymap.emplace ("NCC-1701", "J.T. Kirk");
mymap.emplace ("NCC-1701-D", "J.L. Picard");
mymap.emplace ("NCC-74656", "K. Janeway");
std::cout << "mymap contains:" << std::endl;
for (auto& x: mymap)
std::cout << x.first << ": " << x.second << std::endl;
std::cout << std::endl;
return 0;
}
// output >>
// mymap contains:
// NCC-1701: J.T. Kirk
// NCC-1701-D: J.L. Picard
// NCC-74656: K. Janeway
pair<iterator,bool> insert ( const value_type& val );
새로운 element를 추가한다.📖 std::unordered_map
📖 std::unordered_map::find
📖 std::unordered_map::count
📖 std::unordered_map::insert
📖 std::unordered_map::emplace