예제 #1
0
 public override bool Contains2(Obj obj)
 {
     if (revIdxs == null)
     {
         revIdxs = Algs.SortedIndexes(col2, col1);
     }
     return(Algs.BinSearchRange(revIdxs, col2, obj)[1] > 0);
 }
예제 #2
0
 public override bool Contains13(Obj val1, Obj val3)
 {
     if (idxs312 == null)
     {
         idxs312 = Algs.SortedIndexes(col3, col1, col2);
     }
     return(Algs.BinSearchRange(idxs312, col3, col1, val3, val1)[1] > 0);
 }
예제 #3
0
 public override bool Contains23(Obj val2, Obj val3)
 {
     if (idxs231 == null)
     {
         idxs231 = Algs.SortedIndexes(col2, col3, col1);
     }
     return(Algs.BinSearchRange(idxs231, col2, col3, val2, val3)[1] > 0);
 }
예제 #4
0
        public override BinRelIter GetBinRelIterByCol2(Obj obj)
        {
            if (revIdxs == null)
            {
                revIdxs = Algs.SortedIndexes(col2, col1);
            }
            int[] firstAndCount = Algs.BinSearchRange(revIdxs, col2, obj);
            int   first         = firstAndCount[0];
            int   count         = firstAndCount[1];

            return(new BinRelIter(col1, col2, revIdxs, first, first + count - 1));
        }
예제 #5
0
        public override TernRelIter GetTernRelIterByCol23(Obj val2, Obj val3)
        {
            if (idxs231 == null)
            {
                idxs231 = Algs.SortedIndexes(col2, col3, col1);
            }
            int[] firstAndCount = Algs.BinSearchRange(idxs231, col2, col3, val2, val3);
            int   first         = firstAndCount[0];
            int   count         = firstAndCount[1];

            return(new TernRelIter(col1, col2, col3, idxs231, first, first + count - 1));
        }