Skip to content

Module: Containers

Hannes Hauswedell edited this page Mar 6, 2017 · 3 revisions

Regular containers

We work with STL containers and only create custom containers, where we need to. None of these need to be created during the initial sprint.

  • bitcompressed_vector<alphabet_concept> similar to SeqAn2's String<TValue, Alloc<Packed<>>
    • should work with any Type that satisfies the SeqAn Alphabet concept
    • difficulty to implement: easy
  • mmapped<random_access_container_concept> similar to SeqAn2's String<TValue, MMapp<T>
    • should work with any random access container as base
    • difficulty to implement: medium–hard
  • externalized<random_access_container_concept> similar to SeqAn2's String<TValue, External<T>
    • should work with any random access container as base
    • difficulty to implement: medium
    • do we really need this one?
    • if this gets ported from SeqAn2, make sure to make read access thread-safe (use thread_local cache)

All of these would model the SequenceContainer concept and a (possibly custom random_access_container_concept), but would not model ContiguousContainer, because one cannot strictly infer j's memory position from i's memory position, even if the linear distance between i and j are known.

Containers of containers

  • add a concept for this
  • create something like the ConcatDirect StringSet
  • Maybe this should be done during the sprint?
  • different implementations possible, for many short sequences compressed bitvectors would be better for delimiter than vector of uint64_t
Clone this wiki locally