std::unordered_map::unordered_map
2013-12-12 15:27
549 查看
转自:http://en.cppreference.com/w/cpp/container/unordered_map/unordered_map
Constructs new container from a variety of data sources. Optionally uses user supplied
create,
the function to compare keys and
1) default constructor. Constructs empty container.
2) constructs the container with the contents of the range
3) copy constructor. Constructs the container with the copy of the contents of
not provided, allocator is obtained by calling std::allocator_traits<allocator_type>::select_on_copy_construction(other).
4) move constructor. Constructs the container with the contents of
not provided, allocator is obtained by move-construction from the allocator belonging to
5) constructs the container with the contents of the initializer list
1) constant
2) linear in distance between
3) linear in size of
4) constant. If
then linear.
5) linear in size of
Run this code
explicit unordered_map( size_type bucket_count = /*implementation-defined*/, const Hash& hash = Hash(), const KeyEqual& equal = KeyEqual(), const Allocator& alloc = Allocator() ); unordered_map( size_type bucket_count, const Allocator& alloc = Allocator() ); unordered_map( size_type bucket_count, const Hash& hash, const Allocator& alloc = Allocator() ); | (1) | (since C++11) (since C++14) |
explicit unordered_map( const Allocator& alloc ); | (1) | (since C++11) |
template< class InputIt > unordered_map( InputIt first, InputIt last, size_type bucket_count = /*implementation-defined*/, const Hash& hash = Hash(), const KeyEqual& equal = KeyEqual(), const Allocator& alloc = Allocator() ); template< class InputIt > unordered_map( InputIt first, InputIt last, size_type bucket_count, const Allocator& alloc = Allocator() ); template< class InputIt > unordered_map( InputIt first, InputIt last, size_type bucket_count, const Hash& hash, const Allocator& alloc = Allocator() ); | (2) | (since C++11) (since C++14) |
unordered_map( const unordered_map& other ); | (3) | (since C++11) |
unordered_map( const unordered_map& other, const Allocator& alloc ); | (3) | (since C++11) |
unordered_map( unordered_map&& other ); | (4) | (since C++11) |
unordered_map( unordered_map&& other, const Allocator& alloc ); | (4) | (since C++11) |
unordered_map( std::initializer_list<value_type> init, size_type bucket_count = /*implementation-defined*/, const Hash& hash = Hash(), const KeyEqual& equal = KeyEqual(), const Allocator& alloc = Allocator() ); unordered_map( std::initializer_list<value_type> init, size_type bucket_count, const Allocator& alloc = Allocator() ); unordered_map( std::initializer_list<value_type> init, size_type bucket_count, const Hash& hash, const Allocator& alloc = Allocator() ); | (5) | (since C++11) (since C++14) |
bucket_countas a minimal number of buckets to
create,
hashas the hash function,
equalas
the function to compare keys and
allocas the allocator.
1) default constructor. Constructs empty container.
2) constructs the container with the contents of the range
[first, last).
3) copy constructor. Constructs the container with the copy of the contents of
other. If
allocis
not provided, allocator is obtained by calling std::allocator_traits<allocator_type>::select_on_copy_construction(other).
4) move constructor. Constructs the container with the contents of
otherusing move semantics. If
allocis
not provided, allocator is obtained by move-construction from the allocator belonging to
other.
5) constructs the container with the contents of the initializer list
init.
Parameters
alloc | - | allocator to use for all memory allocations of this container |
bucket_count | - | minimal number of buckets to use on initialization. If it is not specified, implementation-defined default value is used |
hash | - | hash function to use |
equal | - | comparison function to use for all key comparisons of this container |
first, last | - | the range to copy the elements from |
other | - | another container to be used as source to initialize the elements of the container with |
init | - | initializer list to initialize the elements of the container with |
Type requirements | ||
-InputItmust meet the requirements of InputIterator. |
Complexity
This section is incomplete |
2) linear in distance between
firstand
last
3) linear in size of
other
4) constant. If
allocis given and alloc != other.get_allocator(),
then linear.
5) linear in size of
init
Example
Run this code#include <unordered_map> #include <vector> #include <bitset> #include <string> #include <utility> struct Key { std::string first; std::string second; }; struct KeyHash { std::size_t operator()(const Key& k) const { return std::hash<std::string>()(k.first) ^ (std::hash<std::string>()(k.second) << 1); } }; struct KeyEqual { bool operator()(const Key& lhs, const Key& rhs) const { return lhs.first == rhs.first && lhs.second == rhs.second; } }; int main() { // default constructor: empty map std::unordered_map<std::string, std::string> m1; // list constructor std::unordered_map<int, std::string> m2 = { {1, "foo"}, {3, "bar"}, {2, "baz"}, }; // copy constructor std::unordered_map<int, std::string> m3 = m2; // move constructor std::unordered_map<int, std::string> m4 = std::move(m2); // range constructor std::vector<std::pair<std::bitset<8>, int>> v = { {0x12, 1}, {0x01,-1} }; std::unordered_map<std::bitset<8>, double> m5(v.begin(), v.end()); // constructor for a custom type std::unordered_map<Key, std::string, KeyHash, KeyEqual> m6 = { { {"John", "Doe"}, "example"}, { {"Mary", "Sue"}, "another"} }; }
See also
operator= | assigns values to the container (public member function) |
相关文章推荐
- c++11::std::unordered_map::demo
- boost:unordered_map和std::map的使用详解和性能比较
- std::unordered_map用法
- C++11:基于std::unordered_map和共享锁构建线程安全的map
- C++11中std::unordered_map的使用
- C++ Containers library std::unordered_map
- std::map, std::multimap, std::tr1::unordered_map 区别 - 笔记本 - 博客频道 - CSDN.NET
- C++11中std::unordered_map的使用
- boost::unordered_map 和 std::map 的对比(包括速度和内存消耗)
- std::unordered_map(提供自己的Hash函数和等价准则)
- boost::unordered_map 和 std::map 的效率 与 内存比较
- std::map std::unordered_map 性能测试
- C++ std::unordered_map
- 用std::pair做Unordered_map的key(C++)
- std::map, std::multimap, std::tr1::unordered_map 区别
- C++学习笔记-----std::pair作为unordered_map的key
- std::map等容器 谓词 _Pr使用lambda 出错
- leetcode之求数组中俩个值和等于给定值用unordered_map降低时间复杂度
- std::map 通过遍历删除满足某些条件元素的两种方式
- boost中serialization库对unordered_map支持