【c++】STL 容器 unordered_map用法详解

  • 这里对unordered_map进行一些简单的介绍,包括其基本用法。更加详细的介绍请学习cplusplus网站相关资料。1

一、定义

template < class Key,                                    // unordered_map::key_type
           class T,                                      // unordered_map::mapped_type
           class Hash = hash<Key>,                       // unordered_map::hasher
           class Pred = equal_to<Key>,                   // unordered_map::key_equal
           class Alloc = allocator< pair<const Key,T> >  // unordered_map::allocator_type
           > class unordered_map;
  • 定义看不懂,没事留着往后有能力看懂了在慢慢看,我们先来看下它是干什么么用的。
    cplusplus中对其介绍如下(想看的看下,不想看的跳过):
    【c++】STL 容器 unordered_map用法详解_第1张图片
    这部分介绍主要说明了一下几点:

    • 首先unordered_map是一个将key和value关联起来的容器,它可以高效的根据单个key值查找对应的value.
    • key值应该是唯一的,key和value的数据类型可以不相同。
    • unordered_map存储元素时没有进行排序,只是根据key的哈希值,将元素存在指定位置,所以根据key查找单个value时非常高效,平均可以在常数时间内完成。
    • unordered_map查询单个key的时候效率比map高,但是要查询某一范围内的key值时比map效率低。
    • 可以使用[]操作符来访问key值对应的value值。
  • 然后其它更加详细的介绍请移步cplusplus

二、用法示例

#include 
#include 
using namespace std;
int main()
{
	string key="123";
	int value=4;
	unordered_map<string, int> unomap;//创建一个key为string类型,value为int类型的unordered_map
	unomap.emplace(key, value);//使用变量方式,插入一个元素
	unomap.emplace("456", 7);//也可以直接写上key和value的值
	cout<<unomap["123"];//通过key值来访问value

	cout<<endl;
	for(auto x:unomap)//遍历整个map,输出key及其对应的value值
		cout<<x.first<<"  "<<x.second<<endl;

	for(auto x:unomap)//遍历整个map,并根据其key值,查看对应的value值
		cout<<unomap[x.first]<<endl;
}
  • 更多方法请参考cplusplus.
  • 然后上面代码中用到的for循环方法,可以在这里看到。

  1. cplusplus关于unordered_map的介绍 ↩︎

你可能感兴趣的:(C语言/C++)