我只是想知道是否有任何实现以下的stl / boost类型。
我需要一对根据提供的二元谓词将其元素保持在有序状态的对,即始终对应于条件Predicate(pair.first, pair.second) == true
。
更具体一点,我需要一对按顺序存储其元素的对,即
对于任何一对pair.first < pair.second
答案 0 :(得分:3)
如果第一秒是示例中的字段似乎是不可能的,因为当使用时更改其中一个字段时,不会调用任何对的方法。如果这是方法,那么这很容易:
class UnorderePair{
T first_, second_;
T& first(){
return predicate(first_, second_)? first_: second_;
}
T& second(){
return !predicate(first_, second_)? first_: second_;
}
};
答案 1 :(得分:2)
您可以使用std::set
,或者为ctor创建一个适配器,在ctor中保留2个元素,并丢弃任何会破坏类assert ( length == 2)
的类不变量的追加/前置/任何内容。