- SamSequenceIterator seqIter = Begin();
- SamSequenceIterator seqEnd = End();
- for ( size_t i = 0 ; seqIter != seqEnd; ++seqIter, ++i ) {
- SamSequence& seq = (*seqIter);
- if( seq.Name == sequenceName ) {
- m_data.erase( Begin() + i );
- }
+ // skip if empty dictionary or if name unknown
+ if ( IsEmpty() || !Contains(sequenceName) )
+ return;
+
+ // update 'lookup index' for every entry after @sequenceName
+ const size_t indexToRemove = m_lookupData[sequenceName];
+ const size_t numEntries = m_data.size();
+ for ( size_t i = indexToRemove+1; i < numEntries; ++i ) {
+ const SamSequence& sq = m_data.at(i);
+ --m_lookupData[sq.Name];