multi_index
Ellery Newcomer
ellery-newcomer at utulsa.edu
Mon Mar 5 11:07:53 PST 2012
On 03/05/2012 07:05 AM, Andrei Alexandrescu wrote:
>
> Great! I meant for a long time to suggest Steve Schveighoffer to accept
> a variadic number of predicates for the red-black tree. This is even
> more general (nevertheless I still think it would be great if
> RedBlackTree accepted multiple predicates).
>
> Andrei
>
>
The point of that would just be to have your collection sorted multiple
ways, right? It kinda seems like multi_index is most useful in that
case, but then I don't use multi_index that often, so I don't know.
It would be a nice addition for RedBlackTree.
<code golf>
import multi_index;
import replace;
template RBTreeZ(Value, Preds...){
template Splat(size_t i, size_t N){
static if(i >= N) enum Splat = "";
else{
enum Splat = Replace!(q{
OrderedUnique!("a", Preds[$i]),
}, "$i",i) ~ Splat!(i+1, N);
}
}
enum ss = (Replace!( q{
alias MultiIndexContainer!(Value,
IndexedBy!($indeces)) RBTreeZ;
}, "$indeces",Splat!(0,Preds.length)));
mixin(ss);
}
void main(){
alias RBTreeZ!(int, "a<b", "a>b") MahRBTree;
// it compiles; good enough for me
}
</code golf>
More information about the Digitalmars-d
mailing list