使用静态比较器功能增强多索引复合键

时间:2016-02-24 16:27:22

标签: c++ boost multi-index boost-multi-index

我想为一个多索引容器提供一个复合键,并希望传递一个静态比较器函数(类似下面的代码)。我还想避免使用here给出的解决方案,以避免在比较每两个元素时创建堆栈对象的开销,因为我正在处理大量数据。

bool func(const foo& lhs, const foo& rhs) {
    if (lhs.count >= lhs.threshold && rhs.count < rhs.threshold ||
        lhs.count < lhs.threshold && rhs.count >= rhs.threshold) {
        return lhs.count < lhs.threshold;
    } else if (lhs.time != rhs.time) {
        return lhs.time < rhs.time;
    } else {
        return lhs.count < rhs.count;
    }
}

typedef boost::multi_index_container<
    foo,
    boost::multi_index::indexed_by<
        boost::multi_index::ordered_unique<
            boost::multi_index::composite_key<foo, member, member>,
            func
        > 
    > 
> MultiIndexSet;

0 个答案:

没有答案