Memoria is a C++14 framework providing general purpose dynamic data structures on top of key-value, object, file or block storage. Out of the box the following data structures are provided: map, vector, multimap, table, wide table and some others. Besides basic data structures there are also advanced ones: searchable sequences and wavelet trees. Many others can be designed using building blocks provided by the framework.
The core of the framework is two-level memory allocation scheme, with templatized C++ value sematics on top of it. Framework provides composable building blocks like array-mapped prefix sum trees and searchable sequences to build more sophisticated block-oriented data structures like dynamic vectors and labeled trees. Concurrency is handled via copy-on-write based Git-like branch/merge workflow, data structures are confluently-persistent.
See also project Mariana to use Memoria from Java.
The project is still in active development and is functionally incomplete.