unordered_map的介绍及使用
unordered_map的介绍及使用1、unordered_map的介绍1、unordered_map是存储<key, value>键值对的关联式容器,其允许通过key快速的索引到与其对应的value2、unordered_map中,键值通常用于惟一的标识元素,而映射值是一个对象,其内容与此键关联,键和映射的类型可以不同3、在内部,unordered_map没有对<key, v
·
unordered_map的介绍及使用
1、unordered_map的介绍
1、unordered_map是存储<key, value>键值对的关联式容器,其允许通过key快速的索引到与其对应的value
2、unordered_map中,键值通常用于惟一的标识元素,而映射值是一个对象,其内容与此键关联,键和映射的类型可以不同
3、在内部,unordered_map没有对<key, value>进行排序,unordered_map将相同哈希值的键值对放在对应的桶中
4、unordered_map容器通过key访问单个元素比map快,但它遍历元素子集的范围和迭代方面效率较低
5、unordered_map实现了直接访问操作符(operator[])允许通过key作为参数访问value
6、unordered_map的迭代器至少是前向迭代器
2、unordered_map的构造
函数声明 | 功能介绍 |
---|---|
explicit unordered_map ( size_type n = /* see below */,const hasher& hf = hasher(),const key_equal& eql = key_equal(),const allocator_type& alloc = allocator_type() ); | 构造一个空的unordered_map |
explicit unordered_map ( const allocator_type& alloc ); | 构造一个空的unordered_map |
template unordered_map ( 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_map |
unordered_map ( const unordered_map& ump ); | unordered_map的拷贝构造 |
unordered_map ( const unordered_map& ump, const allocator_type& alloc ); | unordered_map的拷贝构造 |
unordered_map ( unordered_map&& ump ); | 将ump移动到另外一个unordered_map中 |
unordered_map ( unordered_map&& ump, const allocator_type& alloc ); | 将ump移动到另外一个unordered_map中 |
unordered_map ( 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_map中 |
3、unordered_map的迭代器
函数声明 | 功能介绍 |
---|---|
begin | 返回unordered_map第一个元素的迭代器 |
end | 返回unordered_map最后一个元素下一个位置的迭代器 |
cbegin | 返回unordered_map第一个元素的const迭代器 |
cend | 返回unordered_map最后一个元素下一个位置的const迭代器 |
4、unordered_map的操作
函数声明 | 功能介绍 |
---|---|
bool empty() const | 检测unordered_map是否为空 |
size_t size() const | 获取unordered_map的有效元素个数 |
operator[] | 返回与key对应的value,没有一个默认值 |
iterator find(const K& key) | 返回key在哈希桶中的位置 |
size_t count(const K& key) | 返回哈希桶中关键码为key的键值对的个数 |
insert | 向容器中插入键值对 |
erase | 删除容器中的键值对 |
void clear() | 清空容器中有效元素个数 |
void swap(unordered_map&) | 交换两个容器中的元素 |
size_t bucket_count()const | 返回哈希桶中桶的总个数 |
size_t bucket_size(size_t n)const | 返回n号桶中有效元素的总个数 |
size_t bucket(const K& key) | 返回元素key所在的桶号 |
5、unordered_map的使用
#include <iostream>
using namespace std;
#include <unordered_map>
int main()
{
unordered_map<string, double>
myrecipe,
mypantry = { { "milk", 2.0 }, { "flour", 1.5 } };
pair<string, double> myshopping("baking powder", 0.3);
myrecipe.insert(myshopping); // copy insertion
myrecipe.insert(pair<string, double>("eggs", 6.0)); // move insertion
myrecipe.insert(mypantry.begin(), mypantry.end()); // range insertion
myrecipe.insert({ { "sugar", 0.8 }, { "salt", 0.1 } }); // initializer list insertion
unordered_map<std::string, std::string> mymap;
// populating container:
mymap["U.S."] = "Washington";
mymap["U.K."] = "London";
mymap["France"] = "Paris";
mymap["Russia"] = "Moscow";
mymap["China"] = "Beijing";
mymap["Germany"] = "Berlin";
mymap["Japan"] = "Tokyo";
// erase examples:
mymap.erase(mymap.begin()); // erasing by iterator
mymap.erase("France"); // erasing by key
mymap.erase(mymap.find("China"), mymap.end()); // erasing by range
//capacity examples:
cout << mymap.size() << endl;
cout << mymap.empty() << endl;
mymap.clear();
cout << mymap.size() << endl;
cout << mymap.empty() << endl;
system("pause");
return 0;
}
更多推荐
已为社区贡献4条内容
所有评论(0)