c++ unordered_set pair自定义比较函数
【摘要】 推荐采用lambda表达式的方式int main(){ static auto hashFunc = [](const std::pair<std::string, std::string> &aPair) { return static_cast<size_t>(std::hash<std::string>{}(aPair.first) ^ std::hash<std:...
推荐采用lambda表达式的方式
int main()
{
static auto hashFunc = [](const std::pair<std::string, std::string> &aPair) {
return static_cast<size_t>(std::hash<std::string>{}(aPair.first) ^ std::hash<std::string>{}(aPair.second));
// return size_t(int(aPair.first.front()) + int(aPair.second.front()));
};
static auto equalFunc = [](const std::pair<std::string, std::string> &a,
const std::pair<std::string, std::string> &b) {
return a.first == b.first && a.second == b.second;
};
using FuncHashType = std::function<size_t(const std::pair<std::string, std::string> &)>;
using FuncEqualType = std::function<bool(const std::pair<std::string, std::string> &,
const std::pair<std::string, std::string> &)>;
std::unordered_set<std::pair<std::string, std::string>, FuncHashType, FuncEqualType> a({}, hashFunc, equalFunc);
// std::unordered_set<std::pair<std::string, std::string>, decltype(hashFunc), decltype(equalFunc)> a({}, hashFunc, equalFunc);
a.emplace("1", "a");
a.emplace("2", "A");
a.emplace("3", "c");
a.emplace("4", "d");
a.emplace("3", "e");
assert(a.find({"1", "a"}) != a.end());
assert(a.find({"2", "c"}) == a.end());
assert(a.find({"3", "d"}) == a.end());
assert(a.find({"3", "c"}) != a.end());
assert(a.find({"4", "d"}) != a.end());
assert(a.find({"3", "e"}) == a.end());
return 0;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)