栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

unordered

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unordered

有如下结构体

struct Word {
	int len = 0;
	int ascii = 0;
	Word(string str)
	{
		len = str.length();
		for (char c : str)
		{
			ascii += c;
		}
	}
};

需要使用如下场景

unordered_map>m;

这里需要实现哈希函数和重载()函数

struct Hash
{
	std::size_t operator()(const Word& word) const
	{
		using std::size_t;
		using std::hash;

		return ((hash()(word.len)
			^ (hash()(word.ascii) << 1)) >> 1);
	}
};

struct Equal
{
	bool operator () (const Word& lhs, const Word& rhs) const
	{
		return lhs.len == rhs.len
			&& lhs.ascii == rhs.ascii;
	}
};

然后就可以使用ordered_map了

unordered_map, Hash, Equal> m;
		vector> ret;
		for (auto& str : strs)
		{
			Word w(str);
			auto iter = m.find(w);
			if (iter == m.end())
			{
				vector v;
				v.push_back(str);
				m.insert(pair>(w, v));
			}
			else
			{
				iter->second.push_back(str);
			}
		}

		for (auto it = m.begin(); it != m.end(); it++)
		{
			ret.push_back(it->second);
		}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号