如何在C++中创建一个用户定义类或结构的unordered_set
unordered_set 内部实现哈希表来存储元素。默认情况下,我们只能存储预定义类型,如int,string,float等。
如果我们想存储用户定义类型作为结构体的元素,则编译器将显示错误,因为在将元素存储到unordered_set之前,编译器会执行一些检查。而当比较两个用户定义类型时,编译器无法比较它们,因此会生成错误。
因此,为了在unordered_set中存储结构体,需要设计一些比较函数。由于unordered_set还存储实现哈希表以存储元素,因此我们还必须实现散列函数以执行散列相关工作。
以下方法解释了其实现。
实现: 我们创建一个结构体类型并在其中定义一个比较函数,该函数将用于比较两个结构体类型对象。由于unordered_set在内部实现哈希函数,因此我们还应该为用户定义的类型对象实现哈希函数。
语法 为了存储用户定义类型元素,unordered_set应遵循以下语法
以下代码解释了它。
输出:
以下是另一个示例,其中我们使用预定义的哈希函数来创建定义类的总哈希函数。
输出: