STL: unordered_map 自定义键值使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STL: unordered_map 自定义键值使用相关的知识,希望对你有一定的参考价值。

使用Windows下 RECT 类型做unordered_map 键值

1. Hash 函数

 计算自定义类型的hash值。

struct hash_RECT 
{
	size_t operator()(const RECT &rc) const
	{
		return std::_Hash_seq((const unsigned char *)&rc, sizeof(RECT));
	}
};

  

2. 相等函数

 哈希需要处理碰撞,意味着必须判断两个自定义类型对象是否相等。

struct cmp_RECT
{
	bool operator()(const RECT &rc1, const RECT &rc2) const
	{
		return rc1.left == rc2.left && rc1.top == rc2.top
			&& rc1.right == rc2.right && rc1.bottom == rc2.bottom;
	}
};

  

3. 使用

std::unordered_map<RECT, std::wstring, hash_RECT, cmp_RECT> G_mapText

 

以上是关于STL: unordered_map 自定义键值使用的主要内容,如果未能解决你的问题,请参考以下文章

C++ unordered_map使用自定义类型作为键值

多个线程同时在 unordered_map 中添加值使其崩溃

对于一些stl自定义比较函数

关于利用STL实现哈希的问题

STL priority_queue 的自定义分配器

STL容器 -- Map