unordered_multimap的介绍及使用

unordered_multimap的介绍及使用

1、unordered_multimap的介绍

1、无序容器是存储由键值和映射值组合而成的元素的关联容器,非常类似于unordered_map容器,但是允许不同的元素具有等价的键。
2、在unordered_数百万ap中,键值通常用于惟一地标识元素,而映射的值是一个对象,其中包含与该键相关联的内容。键和映射值的类型可能不同。
3、在内部, unordered_multimap中的元素没有在任何特定的顺序排序对关键或映射值, 但组织成桶取决于他们的散列值, 以便快速访问单个元素直接的键值(平均一个恒定的平均时间复杂度)。
4、具有等价键的元素被分组在同一个bucket中,并且迭代器(参见equal_range)可以遍历所有元素。
5、容器中的迭代器至少是前向迭代器。
6、注意这个容器不是在它自己的头文件中定义的,而是共享头文件

2、unordered_multimap的构造

函数声明 功能介绍
explicit unordered_multimap( size_type n = /* see below */, const hasher& hf = hasher(),const key_equal& eql = key_equal(), const allocator_type& alloc = allocator_type() ); 构造一个空的unordered_multimap
explicit unordered_multimap( const allocator_type& alloc ); 构造一个空的unordered_multimap
template unordered_multimap( InputIterator first, InputIterator last, size_type n = /* see below */, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& alloc = allocator_type() ); 用[first,last)区间中的元素构造unordered_multimap
unordered_multimap( const unordered_map& ump ); unordered_multimap的拷贝构造
unordered_multimap( const unordered_multimap& ump, const allocator_type& alloc ); unordered_multimap的拷贝构造
unordered_multimap( unordered_multimap&& ump ); 将ump移动到另外一个unordered_multimap中
unordered_multimap ( unordered_multimap&& ump, const allocator_type& alloc ); 将ump移动到另外一个unordered_multimap中
unordered_multimap ( initializer_list il, size_type n = /* see below */, const hasher& hf = hasher(), const key_equal& eql = key_equal(), const allocator_type& alloc = allocator_type() ); 将initializer_list移动到unordered_multimap中

3、unordered_multimap的迭代器

函数声明 功能介绍
begin 返回unordered_multimap第一个元素的迭代器
end 返回unordered_multimap最后一个元素下一个位置的迭代器
cbegin 返回unordered_multimap第一个元素的const迭代器
cend 返回unordered_multimap最后一个元素下一个位置的const迭代器

4、unordered_multimap的操作

函数声明 功能介绍
bool empty() const 检测unordered_multimap是否为空
size_t size() const 获取unordered_multimap的有效元素个数
iterator find(const K& key) 返回key在哈希桶中的位置
size_t count(const K& key) 返回哈希桶中关键码为key的键值对的个数
insert 向容器中插入键值对
erase 删除容器中的键值对
void clear() 清空容器中有效元素个数
void swap(unordered_multimap&) 交换两个容器中的元素
size_t bucket_count()const 返回哈希桶中桶的总个数
size_t bucket_size(size_t n)const 返回n号桶中有效元素的总个数
size_t bucket(const K& key) 返回元素key所在的桶号

5、unordered_multimap的使用

#include 
#include 

using namespace std;

int main()
{
	unordered_multimap
		first,
		second = { { "AAPL", 200 }, { "GOOG", 100 } };

	pair mypair("MSFT", 500);

	first.insert(mypair);                            // copy insertion
	first.insert(make_pair("GOOG", 50)); // move insertion
	first.insert(second.begin(), second.end());  // range insertion
	first.insert({ { "ORCL", 100 }, { "GOOG", 100 } });    // initializer list insertion

	unordered_multimap myumm = {
		{ "strawberry", "red" },
		{ "banana", "yellow" },
		{ "orange", "orange" },
		{ "lemon", "yellow" },
		{ "apple", "red" },
		{ "apple", "green" },
		{ "pear", "green" },
	};


	// erase examples:
	myumm.erase(myumm.begin());     // erasing by iterator
	myumm.erase("apple");             // erasing by key (erases 2 elements)
	myumm.erase(myumm.find("orange"), myumm.end()); // erasing by range

	unordered_multimap
		a = { { "orange", "FL" }, { "apple", "NY" }, { "apple", "WA" } },
		b = { { "strawberry", "LA" }, { "strawberry", "NC" }, { "pear", "OR" } };

	a.swap(b);

	cout << myumm.empty() << endl;
	cout << myumm.size() << endl;
	cout << myumm.max_size() << endl;

	system("pause");
	return 0;
}

你可能感兴趣的:(unordered_multimap的介绍及使用)