void SAReader::readElems(SAElemVector& elemVector) { assert(m_stage == SAIOS_ELEM); size_t cap = elemVector.capacity(); size_t num_read = 0; SAElem e; while(*m_pReader >> e) { elemVector.push_back(e); ++num_read; } assert(cap >= num_read); (void)cap; m_stage = SAIOS_DONE; }
void SuffixArray::removeReads(const NumericIDSet& idSet) { // Early exit if the idset is empty if(idSet.empty()) return; SAElemVector newData; newData.reserve(m_data.size()); for(size_t idx = 0; idx < m_data.size(); ++idx) { SAElem id = m_data[idx]; if(idSet.find(id.getID()) == idSet.end()) { // not on the delete list newData.push_back(id); } } m_data.swap(newData); m_numStrings -= idSet.size(); }