BitSequenceSDArray::BitSequenceSDArray(const BitString & bs) { uint * tmp_seq = new uint[uint_len(bs.getLength(),1)+1]; ones = 0; for(uint i=0;i<uint_len(bs.getLength(),1)+1;i++) tmp_seq[i] = 0; for(uint i=0;i<bs.getLength();i++) if(bs[i]) { __setbit(tmp_seq,i,1); ones++; } if(ones) selects3_construct(&sd,bs.getLength(),tmp_seq); this->length = bs.getLength(); delete [] tmp_seq; }
BitSequenceSDArray::BitSequenceSDArray(uint * buff, size_t len) { uint * tmp_seq = new uint[uint_len(len,1)+1]; ones = 0; for(uint i=0;i<uint_len(len,1)+1;i++) tmp_seq[i] = 0; for(uint i=0;i<len;i++) if(bitget(buff,i)) { __setbit(tmp_seq,i,1); ones++; } if(ones) selects3_construct(&sd,len,tmp_seq); this->length = len; delete [] tmp_seq; }
static_bitsequence_sdarray::static_bitsequence_sdarray(uint * buff, uint len) { uint * tmp_seq = new uint[uint_len(len,1)+1]; ones = 0; for(uint i=0;i<uint_len(len,1)+1;i++) tmp_seq[i] = 0; for(uint i=0;i<len;i++) if(bitget(buff,i)) { __setbit(tmp_seq,i,1); ones++; } if(ones) selects3_construct(&sd,len,tmp_seq); this->len = len; //sd.lasti=(uint)-3; //this->ones = sd.m; delete [] tmp_seq; }