gpt4 book ai didi

c++ - 如何比较两个 Compare of two std::set

转载 作者:行者123 更新时间:2023-11-28 00:03:10 32 4
gpt4 key购买 nike

当我使用容器std::set时,我想比较set的Compare。set的一个定义如下:

template < class T,                        // set::key_type/value_type
class Compare = less<T>, // set::key_compare/value_compare
class Alloc = allocator<T> // set::allocator_type
> class set;

我们知道 Compare 是集合中元素的排序命令,它可以是 STL 中的函数对象或用户提供的。函数对象的唯一请求是实现 opeartor()。在程序中我可以使用 public 获取 Compare成员函数 value_compare value_comp() const我的问题是如何区分两组的排序标准(两组是否使用相同的排序标准)?

最佳答案

std::set有一个 key_compare typedef 到 Compare 如此简单:

std::is_same<decltype(set_a)::key_compare, decltype(set_b)::key_compare>::value

或者在结构中:

template<typename Set1, typename Set2>
struct is_same_comparator: public std::is_same<typename Set1::key_compare,
typename Set2::key_compare> { };

using S1 = std::set<int>;
using S2 = std::set<int, std::greater<int>>;

static_assert(is_same_comparator<S1, S1>{}, "Oops!");
static_assert(is_same_comparator<S1, S2>{}, "Oops!");

DEMO

关于c++ - 如何比较两个 Compare of two std::set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413703/

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