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

jac*_*hab 5 c++ stl set

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

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

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

谢谢.

Dew*_*wfy 0

std::set 的定义是:

template <
      class Key, 
       class Traits=less<Key>, 
       class Allocator=allocator<Key> 
>
class set
Run Code Online (Sandbox Code Playgroud)

所以 Traits 应该是你的比较运算符,但是如果查看构造函数,你可以再次在那里看到它:

explicit set(
   const Traits& _Comp
);
Run Code Online (Sandbox Code Playgroud)

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