void load(unsigned int K, const Corpus& corpus) { // K_(K), V_(corpus.getV()) { K_ = K; V_ = corpus.getV(); indices_.resize(V_); lengths_.resize(V_); indices_[0] = 0; lengths_[0] = min(corpus.getWordCount(0), K); int total = lengths_[0]; for (unsigned int ii = 1; ii < V_; ++ii) { lengths_[ii] = min(corpus.getWordCount(ii), K); indices_[ii] = indices_[ii - 1] + lengths_[ii - 1]; total += lengths_[ii]; } data_.resize(total); for (unsigned int ii = 0; ii < total; ++ii) { data_[ii] = 0; } // Set up M_ and mask_ M_ = ceil(log2(K)); mask_ = (1L << (M_)) - 1; }