我有一个带有Compare类的std :: set,它需要额外的参数来比较键。此变量参数在运行时确定,我将其打包在集合的密钥内,只是为了使其可供比较。
但是,该参数在逻辑上属于集合而不是键,因此该解决方案看起来很笨拙并且在所有键上复制相同的值。
是否有一种优雅的方法可以将其他参数传递给Compare类? (我首先考虑了set :: value_comp,但是当我需要引用时,它会按值返回比较对象)。
感谢。
答案 0 :(得分:0)
std :: set的定义是:
template <
class Key,
class Traits=less<Key>,
class Allocator=allocator<Key>
>
class set
所以Traits应该是你的比较运算符,但如果看一下构造函数,你可以再看一遍:
explicit set(
const Traits& _Comp
);
所以只需将您的实例传递给构造函数即可。 (注意它是通过复制完成的)