orbtree
|
Specialized set with compact storage. See orbtree for description of members. More...
#include <orbtree.h>
Specialized set with compact storage. See orbtree for description of members.
This is a set, i.e. a collection of elements without duplicates. See orbtree for description of members. Nodes are stored in a flat array and the red-black bit is stored as part of node references. Indexing is done with integers instead of pointers, this can save space especially on 64-bit machines if 32-bit indices are sufficient. Space for each node is sizeof(Key) + 3*sizeof(IndexType) + padding (if necessary)
Key | Type of elements ("keys") stored in this set. |
NVFunc | function calculating the values associated with stored elements. See NVFunc_Adapter_Simple for the description of the expected interface. |
IndexType | unsigned integral type to use for indexing. Maximum number of elements is half of the maximum value of this type - 1. Default is uin32_t, i.e. 32-bit integers, allowing 2^31-1 elements. |
Compare | comparison functor for keys. |
Note: internally, it uses realloc_vector::vector if Key is trivially copyable (as per std::is_trivially_copyable) and stacked_vector::vector otherwise. In the latter case, performnace can be improved by using the libdivide library – see the documentation of stacked_vector for more details.