将更多数据传递给std:set Comparison class

时间:2010-02-24 17:05:04

标签: c++ stl set

我有一个带有Compare类的std :: set,它需要额外的参数来比较键。此变量参数在运行时确定,我将其打包在集合的密钥内,只是为了使其可供比较。

但是,该参数在逻辑上属于集合而不是键,因此该解决方案看起来很笨拙并且在所有键上复制相同的值。

是否有一种优雅的方法可以将其他参数传递给Compare类? (我首先考虑了set :: value_comp,但是当我需要引用时,它会按值返回比较对象)。

感谢。

1 个答案:

答案 0 :(得分:0)

std :: set的定义是:

template <
      class Key, 
       class Traits=less<Key>, 
       class Allocator=allocator<Key> 
>
class set

所以Traits应该是你的比较运算符,但如果看一下构造函数,你可以再看一遍:

explicit set(
   const Traits& _Comp
);

所以只需将您的实例传递给构造函数即可。 (注意它是通过复制完成的)