Python C++;std::无序_集的比较运算符

Python C++;std::无序_集的比较运算符,python,c++,hash,set,unordered,Python,C++,Hash,Set,Unordered,波斯特提出了缺少,{'1','6','j'}#超集 真的 {'1','6','j','t'}

波斯特提出了缺少
{'1','6','j'}#超集
真的
{'1','6','j','t'}<{'1','6','j'}#子集
假的

如何在C++中实现哈希表中的比较运算符(<代码> STD:unOrdEdStEng/<代码>)?或者我们必须坚持使用
std::set
进行除相等以外的任何比较?

Python的集合基于子集关系具有部分顺序,而不是总顺序。例如,
{1,2,3}<{2,3,4}
{1,2,3}>{2,3,4}
都不是真的,但是
{1,2,3}=={2,3,4}
是假的


您可以编写一个基于子集关系的Python集合的偏序,而不是总序。例如,
{1,2,3}<{2,3,4}
{1,2,3}>{2,3,4}
都不是真的,但是
{1,2,3}=={2,3,4}
是假的


您可以编写
您仍然可以根据需要定义自己的自定义关系。您不能为
std
类型添加运算符重载,因为ADL将找不到它们(并且您不允许向命名空间
std
添加任何内容)。您可以通过实现函数或函数对象。您可以研究使用`来实现
std::unordered_set
的相同功能。您仍然可以根据需要定义自己的自定义关系。您不能为
std
类型添加运算符重载,因为ADL将找不到它们(并且您不允许向命名空间
std
添加任何内容)。您可以通过实现函数或函数对象。您可以研究使用`来实现与std::unordered_set
相同的功能。
{'1', '6',  't', 'j'} > {'1', '6', 'j'}   # superset
True
{'1', '6', 'j', 't'} < {'1', '6', 'j'}    # subset
False
template<typename UnorderedContainer>
bool is_proper_subset(const UnorderedContainer & lhs, const UnorderedContainer & rhs);
template<typename UnorderedContainer>
bool is_subset(const UnorderedContainer & lhs, const UnorderedContainer & rhs);

template<typename UnorderedContainer>
bool is_proper_superset(const UnorderedContainer & lhs, const UnorderedContainer & rhs);

template<typename UnorderedContainer>
bool is_superset(const UnorderedContainer & lhs, const UnorderedContainer & rhs);