gpt4 book ai didi

c++ - 直接使用成员函数与 unordered_set

转载 作者:行者123 更新时间:2023-11-30 03:39:46 26 4
gpt4 key购买 nike

是否有将 std::unordered_set 与实现 operator==hash 的类一起使用的捷径?具体来说,有没有一种方法可以 (1) 避免创建独立的 operator==(const Object& a, const Object& b) 函数,以及 (2) 避免定义整个类来保存 size_t operator()(const Object& o) const {return o.hash();}

当然,这些都不是问题,我只是好奇。

最佳答案

  1. operator== 已被定义为成员函数。

  2. 如果用作键的类有一个成员函数 hash() const 那么我们可以像这样做一些简单的事情:

-

#include <unordered_map>
#include <string>

struct myclass {
std::size_t hash() const { return 0; }
bool operator==(const myclass& r) const { return true; }
};

struct self_hash
{
template<class T>
auto operator()(const T& r) const { return r.hash(); }
};

int main()
{

using mymap = std::unordered_map<myclass, std::string, self_hash>;

auto m = mymap();
}

关于c++ - 直接使用成员函数与 unordered_set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38547533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com