unordered_multimap的介绍及使用
unordered_multimap的介绍及使用1、unordered_multimap的介绍1、无序容器是存储由键值和映射值组合而成的元素的关联容器,非常类似于unordered_map容器,但是允许不同的元素具有等价的键。2、在unordered_数百万ap中,键值通常用于惟一地标识元素,而映射的值是一个对象,其中包含与该键相关联的内容。键和映射值的类型可能不同。3、在内部, unordere
·
unordered_multimap的介绍及使用
1、unordered_multimap的介绍
1、无序容器是存储由键值和映射值组合而成的元素的关联容器,非常类似于unordered_map容器,但是允许不同的元素具有等价的键。
2、在unordered_数百万ap中,键值通常用于惟一地标识元素,而映射的值是一个对象,其中包含与该键相关联的内容。键和映射值的类型可能不同。
3、在内部, unordered_multimap中的元素没有在任何特定的顺序排序对关键或映射值, 但组织成桶取决于他们的散列值, 以便快速访问单个元素直接的键值(平均一个恒定的平均时间复杂度)。
4、具有等价键的元素被分组在同一个bucket中,并且迭代器(参见equal_range)可以遍历所有元素。
5、容器中的迭代器至少是前向迭代器。
6、注意这个容器不是在它自己的头文件中定义的,而是共享头文件 <unordered_map>。
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<value_type> 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 <iostream>
#include <unordered_map>
using namespace std;
int main()
{
unordered_multimap<std::string, int>
first,
second = { { "AAPL", 200 }, { "GOOG", 100 } };
pair<std::string, int> 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<string, string> 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<string, string>
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;
}
更多推荐
已为社区贡献4条内容
所有评论(0)