我想为一个多索引容器提供一个复合键,并希望传递一个静态比较器函数(类似下面的代码)。我还想避免使用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;