Skip to content

jhcarl0814/augmented_containers

Repository files navigation

Augmented Containers

This library provides a stronger version of sequence containers (let containers (and its subranges) always have several accompanying results of algorithms/views), <algorithm> and <ranges> (when the input sequence changes, refresh output values/ranges in logarithmic time complexity). To help understand what kind of problems it solves: Dynamic problem (algorithms) - Wikipedia, Augmented map - Wikipedia.

Doc

Requirements

  • This library depends on C++23. Support of legacy versions (C++11, 14, 17, 20) is possible but takes extra efforts.
  • (Each component in this library is a single header file.)

Status

  • Under Development
    • augmented deque
    • augmented sequence
    • augmented graph
  • Design Completed, Scheduled for Development
    • augmented *****
    • augmented ***/***/********/********

Todo

  • augmented deque and augmented sequence
    • node types change from "depend on struct config_t" to "depend on size of buffer and size management strategy" to prepare for splice, merge and extract operations and reduce code bloat
    • ctor(range), insert(range), insert_range(range), append_range(range), prepend_range(range) change from inserting one by one to bulk loading
    • assign and operator= reuse existing nodes if move/copy assignable
    • sort out and make clear requirements of projector and accumulator
    • add api section to doc
  • augmented sequence and augmented graph
    • change from raw pointer to pointer type suggested by user-supplied allocator
  • augmented sequence
    • erase(range) change from erasing one by one to spliting and concatenating

Waiting On

  • explicit object parameter (deducing this) compilers' support
  • homogeneous variadic function parameters (P1219)

About

Maintain algorithm's output on changing input data

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published