Spec
Dependent StringSetStringSet implementation that only stores pointers to strings in other string sets.
| Extends | StringSet |
|---|---|
| All Extended | StringSet |
| All Subcl's | GenerousDependentStringSet, TightDependentStringSet |
| All Impl'd | AssignableConcept, ContainerConcept, DestructibleConcept, ForwardContainerConcept, RandomAccessContainerConcept, ReversibleContainerConcept, SegmentableConcept, StringConcept, TextConcept |
| Defined in | <seqan/sequence.h> |
| Signature |
template <typename TString, typename TSpec>
class StringSet<TString, Depedent<TSpec> >;
|
Template Parameters
TString |
The type of the string to store in the string set. |
|---|---|
TSpec |
Tag for further specializing the string set. |
Member Function Overview
Member Functions Inherited From AssignableConcept
Member Functions Inherited From RandomAccessContainerConcept
Interface Function Overview
Interface Functions Inherited From StringSet
assignValueassignValueByIdclearconcatgetValueByIdidToPositionlengthSumpositionToIdremoveValueByIdreservestrSplitvalueById
Interface Functions Inherited From AssignableConcept
Interface Functions Inherited From ContainerConcept
directionIteratorbeginendlengthemptyswapwriteValuewritegetObjectIdmoveValueappendappendValueshrinkToFit
Interface Functions Inherited From RandomAccessContainerConcept
Interface Functions Inherited From SegmentableConcept
Interface Functions Inherited From StringConcept
iterappendappendValuefrontbackresizecleareraseeraseFronteraseBackcapacitycomputeGenerousCapacityinsertinsertValuereplace
Interface Functions Inherited From TextConcept
Interface Metafunction Overview
Interface Metafunctions Inherited From StringSet
Interface Metafunctions Inherited From ContainerConcept
DefaultGetIteratorSpecDefaultIteratorSpecDifferenceDirectionIteratorGetValueIteratorPositionReferenceSizeValue
Interface Metafunctions Inherited From SegmentableConcept
Interface Metafunctions Inherited From TextConcept
Detailed Description
Important: This is an abstract class. Use one of the following specializations: TightDependentStringSet and GenerousDependentStringSet.
A Dependent StringSet (DSS) can be used like a normal StringSet while internally storing only pointers to a source set.
Modifying a Dependent StringSet
(1) Removing a sequence from a DSS only removes the pointer and does not change the source set.
(2) Appending a sequence to a DSS appends a pointer to that sequence and does not change the source set.
(3) Assigning a sequence to a position (or id) of a DSS, dereferences the pointer first and does thus additionally change the source set.
(4) Accessing the DSS at a position (or id) dereferences the pointer, and when stored as a reference, modifications also lead to a change in the source set.
Position vs. Id
When a sequence is removed in a DSS, the positions of pointers shift and do not represent the exact position in the original source set anymore. To distinguish between new and original positions, we introduce the term id which refers to the original positions in the source set. Every modification of a DSS can be either based on the id (function ending on ById()) or the position depending on the behaviour you want to realize.
The following figure illustrates the behaviour when removing a sequence:

Tight vs. Generous
The two different specializations Tight and Generous provide the same functionality but behave slightly different concerning run time and certain errors (e.g. index out of range). See the correspoinding documentation pages TightDependentStringSet and GenerousDependentStringSet for further details.