我有一个带有Compare类的std :: set,它需要额外的参数来比较键.此变量参数在运行时确定,我将其打包在集合的密钥内,以使其可供比较使用.
但是,该参数在逻辑上属于集合而不是键,因此该解决方案看起来很笨拙并且在所有键上复制相同的值.
是否有一种优雅的方法可以将其他参数传递给Compare类?(我首先想到了set :: value_comp,但是当我需要引用时它会按值返回比较对象).
谢谢.
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)
所以只需将您的实例传递给构造函数即可。(注意是通过复制完成的)
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |