1

我只是想知道是否有任何实现以下内容的 stl/boost 类型。

我需要一对根据提供的二进制谓词保持其元素处于有序状态,即始终对应于条件Predicate(pair.first, pair.second) == true

更具体地说,我需要一个按降序存储其元素的对,即对于任何对pair.first < pair.second

4

2 回答 2

3

如果第一秒是您的示例中的字段,这似乎是不可能的,因为当使用更改其中一个时,不会调用任何配对方法。如果它的方法很容易做到这一点:

class UnorderePair{
    T first_, second_;
    T& first(){
         return predicate(first_, second_)? first_: second_;
    }
    T& second(){
         return !predicate(first_, second_)? first_: second_;
    }

};
于 2012-12-12T15:28:32.887 回答
2

您可以使用std::set,或为它创建一个适配器,在 ctor 中保留 2 个元素并丢弃任何会破坏类不变量的附加/前置/任何内容assert ( length == 2)

于 2012-12-12T15:26:09.123 回答