Esempio n. 1
0
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;
}
Esempio n. 2
0
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();
}