120#include <initializer_list>
149 return a.template
maps<T>([] (
const auto & item) {
return item; });
170 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
190 for (
size_t i = 0; i < a.
size(); ++i)
210 for (
auto it =
l.
get_it(); it.has_curr(); it.next_ne())
230 std::vector<typename C::Item_Type>
ret;
231 if constexpr (
requires { c.size(); })
232 ret.reserve(c.size());
233 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
234 ret.push_back(it.get_curr());
253 for (
const auto & item : v)
273 ret.reserve(v.size());
274 for (
const auto & item : v)
294 for (
const auto & item : v)
316 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
336 for (
size_t i = 0; i < a.
size(); ++i)
356 for (
size_t i = 0; i < a.
size(); ++i)
376 std::deque<typename C::Item_Type>
ret;
377 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
378 ret.push_back(it.get_curr());
397 for (
const auto & item : d)
417 ret.reserve(d.size());
418 for (
const auto & item : d)
438 for (
const auto & item : d)
517 for (
size_t i = 0; i < a.
size(); ++i)
537 for (
const auto & item : v)
560 for (
auto & item : v)
581 for (
auto & item : v)
602 for (
auto & item : v)
623 for (
auto & item : v)
643template <
class T,
class Compare,
class Alloc>
647 for (
const auto & item : s)
665template <
class T,
class Compare,
class Alloc>
669 ret.reserve(s.size());
670 for (
const auto & item : s)
688template <
class T,
class Compare,
class Alloc>
692 for (
const auto & item : s)
711 std::set<typename C::Item_Type>
ret;
712 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
733template <
class K,
class V,
class Compare,
class Alloc>
738 for (
const auto & [key, value] : m)
757template <
class K,
class V,
class Compare,
class Alloc>
762 ret.reserve(m.size());
763 for (
const auto & [key, value] : m)
782template <
class K,
class V,
class Compare,
class Alloc>
786 for (
const auto & [key, value] : m)
805template <
class K,
class V,
class Compare,
class Alloc>
809 for (
const auto & [key, value] : m)
836 for (
const auto & item :
il)
861 for (
const auto & item :
il)
886 for (
const auto & item :
il)
911 for (
const auto & item :
il)
931template <
typename Key,
template <
typename,
class>
class Tree,
class Compare>
952template <
typename Key,
template <
typename,
class>
class Tree,
class Compare>
974template <
typename Key,
template <
typename,
class>
class Tree,
class Compare>
992template <
typename Key,
template <
typename,
class>
class Tree,
class Compare>
995 std::vector<Key>
ret;
1011template <
typename Key,
template <
typename,
class>
class Tree,
class Compare>
1034 for (
auto it = c.get_it(); it.has_curr(); it.next_ne())
1051 for (
const auto & item : v)
1068template <
typename Key,
template <
typename,
class>
class HashTable,
class Cmp>
1086template <
typename Key,
template <
typename,
class>
class HashTable,
class Cmp>
1090 ret.reserve(s.size());
1105template <
typename Key,
template <
typename,
class>
class HashTable,
class Cmp>
1123template <
typename Key,
template <
typename,
class>
class HashTable,
class Cmp>
1126 std::vector<Key>
ret;
1127 ret.reserve(s.size());
1148template <
typename Key,
typename Data,
1149 template <
typename,
class>
class Tree,
class Compare>
1169template <
typename Key,
typename Data,
1170 template <
typename,
class>
class Tree,
class Compare>
1191template <
typename Key,
typename Data,
1192 template <
typename,
class>
class Tree,
class Compare>
1196 std::map<Key, Data>
ret;
1197 m.
for_each([&
ret](
const std::pair<Key, Data> & p) {
1214template <
typename Key,
typename Data,
1215 template <
typename,
class>
class Tree,
class Compare>
1235template <
typename Key,
typename Data,
1236 template <
typename,
class>
class Tree,
class Compare>
1256template <
class K,
class V,
class Compare,
class Alloc>
1261 for (
const auto & [key, value] : m)
1279template <
typename Key,
typename Data,
class Cmp,
1280 template <
typename,
class>
class HashTable>
1285 m.for_each([&
ret](
const std::pair<Key, Data> & p) {
ret.
append(p); });
1300template <
typename Key,
typename Data,
class Cmp,
1301 template <
typename,
class>
class HashTable>
1306 ret.reserve(m.size());
1307 m.for_each([&
ret](
const std::pair<Key, Data> & p) {
ret.
append(p); });
1322template <
typename Key,
typename Data,
class Cmp,
1323 template <
typename,
class>
class HashTable>
1327 std::map<Key, Data>
ret;
1328 m.for_each([&
ret](
const std::pair<Key, Data> & p) {
1345template <
typename Key,
typename Data,
class Cmp,
1346 template <
typename,
class>
class HashTable>
1351 m.for_each([&
ret](
const std::pair<Key, Data> & p) {
ret.
append(p.first); });
1366template <
typename Key,
typename Data,
class Cmp,
1367 template <
typename,
class>
class HashTable>
1372 m.for_each([&
ret](
const std::pair<Key, Data> & p) {
ret.
append(p.second); });
Simple dynamic array with automatic resizing and functional operations.
constexpr size_t size() const noexcept
Return the number of elements stored in the stack.
size_t size() const noexcept
Return the current dimension of array.
Dynamic doubly linked list with O(1) size and bidirectional access.
Self-adjusting dynamic hash table.
Dynamic singly linked list with functional programming support.
T & insert(const T &item)
Insert a new item by copy.
T & append(const T &item)
Append a new item by copy.
Generic key-value map implemented on top of a binary search tree.
Dynamic set backed by balanced binary search trees with automatic memory management.
const size_t & size() const
Returns the cardinality of the set.
void emplace(Args &&... args)
Appends a new element into the container by constructing it in-place with the given args.
void for_each(Operation &operation)
Traverse all the container and performs an operation on each element.
auto get_it() const
Return a properly initialized iterator positioned at the first item on the container.
Main namespace for Aleph-w library functions.
DynSetTree< T > vector_to_DynSetTree(const std::vector< T > &v)
Convert a std::vector to a DynSetTree.
std::set< Key > settree_to_stdset(const DynSetTree< Key, Tree, Compare > &s)
Convert a DynSetTree to a std::set.
DynList< T > to_DynList(const Array< T > &a)
Convert an Array to a DynList.
DynList< K > map_keys_to_DynList(const std::map< K, V, Compare, Alloc > &m)
Extract keys from a std::map to a DynList.
DynList< V > map_values_to_DynList(const std::map< K, V, Compare, Alloc > &m)
Extract values from a std::map to a DynList.
DynList< std::pair< K, V > > map_to_DynList(const std::map< K, V, Compare, Alloc > &m)
Convert a std::map to a DynList of pairs.
DynList< T > dyndlist_to_DynList(const DynDlist< T > &l)
Convert a DynDlist to a DynList.
DynList< T > dynarray_to_DynList(const DynArray< T > &a)
Convert a DynArray to a DynList.
DynList< Key > maptree_keys_to_DynList(const DynMapTree< Key, Data, Tree, Compare > &m)
Extract keys from a DynMapTree to a DynList.
DynArray< T > dyndlist_to_DynArray(const DynDlist< T > &l)
Convert a DynDlist to a DynArray.
Array< std::pair< Key, Data > > maphash_to_Array(const MapOpenHash< Key, Data, Cmp, HashTable > &m)
Convert a MapOpenHash to an Array of pairs.
DynList< std::pair< Key, Data > > maphash_to_DynList(const MapOpenHash< Key, Data, Cmp, HashTable > &m)
Convert a MapOpenHash to a DynList of pairs.
Array< std::pair< Key, Data > > maptree_to_Array(const DynMapTree< Key, Data, Tree, Compare > &m)
Convert a DynMapTree to an Array of pairs.
DynDlist< T > vector_to_DynDlist(const std::vector< T > &v)
Convert a std::vector to a DynDlist.
Array< T > deque_to_Array(const std::deque< T > &d)
Convert a std::deque to an Array.
Array< T > init_to_Array(std::initializer_list< T > il)
Convert an initializer_list to an Array.
std::vector< Key > sethash_to_vector(const DynHashTable< Key, HashTable, Cmp > &s)
Convert a DynHashTable (hash set) to a std::vector.
DynList< std::pair< Key, Data > > maptree_to_DynList(const DynMapTree< Key, Data, Tree, Compare > &m)
Convert a DynMapTree to a DynList of pairs.
std::decay_t< typename HeadC::Item_Type > T
Array< T > dynarray_to_Array(const DynArray< T > &a)
Convert a DynArray to an Array.
DynList< Data > maptree_values_to_DynList(const DynMapTree< Key, Data, Tree, Compare > &m)
Extract values from a DynMapTree to a DynList.
DynArray< Key > settree_to_DynArray(const DynSetTree< Key, Tree, Compare > &s)
Convert a DynSetTree to a DynArray.
std::map< Key, Data > maphash_to_stdmap(const MapOpenHash< Key, Data, Cmp, HashTable > &m)
Convert a MapOpenHash to a std::map.
Array< T > set_to_Array(const std::set< T, Compare, Alloc > &s)
Convert a std::set to an Array.
DynList< T > vector_to_DynList(const std::vector< T > &v)
Convert a std::vector to a DynList.
DynArray< T > dynlist_to_DynArray(const DynList< T > &l)
Convert a DynList to a DynArray.
DynArray< T > array_to_DynArray(const Array< T > &a)
Convert an Array to a DynArray.
DynSetTree< typename C::Item_Type > to_DynSetTree(const C &c)
Convert a container to a DynSetTree (AVL by default).
@ Tree
Basic arc (in spanning tree).
DynArray< T > deque_to_DynArray(const std::deque< T > &d)
Convert a std::deque to a DynArray.
std::vector< Key > settree_to_vector(const DynSetTree< Key, Tree, Compare > &s)
Convert a DynSetTree to a std::vector.
std::set< typename C::Item_Type > to_set(const C &c)
Convert a container to a std::set.
Array< T > vector_to_Array(const std::vector< T > &v)
Convert a std::vector to an Array.
DynList< Key > sethash_to_DynList(const DynHashTable< Key, HashTable, Cmp > &s)
Convert a DynHashTable (hash set) to a DynList.
Array< typename C::Item_Type > to_Array(const C &c)
Convert a container to an Array.
DynDlist< T > dynlist_to_DynDlist(const DynList< T > &l)
Convert a DynList to a DynDlist.
Array< Key > sethash_to_Array(const DynHashTable< Key, HashTable, Cmp > &s)
Convert a DynHashTable (hash set) to an Array.
DynDlist< T > init_to_DynDlist(std::initializer_list< T > il)
Convert an initializer_list to a DynDlist.
DynList< Data > maphash_values_to_DynList(const MapOpenHash< Key, Data, Cmp, HashTable > &m)
Extract values from a MapOpenHash to a DynList.
DynList< Key > settree_to_DynList(const DynSetTree< Key, Tree, Compare > &s)
Convert a DynSetTree to a DynList.
std::map< Key, Data > maptree_to_stdmap(const DynMapTree< Key, Data, Tree, Compare > &m)
Convert a DynMapTree to a std::map.
DynArray< T > vector_to_DynArray(const std::vector< T > &v)
Convert a std::vector to a DynArray.
DynList< T > deque_to_DynList(const std::deque< T > &d)
Convert a std::deque to a DynList.
Array< std::pair< K, V > > map_to_Array(const std::map< K, V, Compare, Alloc > &m)
Convert a std::map to an Array of pairs.
DynList< Key > maphash_keys_to_DynList(const MapOpenHash< Key, Data, Cmp, HashTable > &m)
Extract keys from a MapOpenHash to a DynList.
DynList< T > set_to_DynList(const std::set< T, Compare, Alloc > &s)
Convert a std::set to a DynList.
DynMapTree< K, V > stdmap_to_DynMapTree(const std::map< K, V, Compare, Alloc > &m)
Convert a std::map to a DynMapTree.
DynArray< T > set_to_DynArray(const std::set< T, Compare, Alloc > &s)
Convert a std::set to a DynArray.
Array< Key > settree_to_Array(const DynSetTree< Key, Tree, Compare > &s)
Convert a DynSetTree to an Array.
std::vector< typename C::Item_Type > to_vector(const C &c)
Convert a container to a std::vector.
DynArray< Key > sethash_to_DynArray(const DynHashTable< Key, HashTable, Cmp > &s)
Convert a DynHashTable (hash set) to a DynArray.
std::deque< typename C::Item_Type > to_deque(const C &c)
Convert a container to a std::deque.
DynArray< typename C::Item_Type > to_DynArray(const C &c)
Convert a container to a DynArray.
DynList< T > maps(const C &c, Op op)
Classic map operation.
DynDlist< T > dynarray_to_DynDlist(const DynArray< T > &a)
Convert a DynArray to a DynDlist.
DynList< T > init_to_DynList(std::initializer_list< T > il)
Convert an initializer_list to a DynList.
DynArray< T > init_to_DynArray(std::initializer_list< T > il)
Convert an initializer_list to a DynArray.
Open addressing hash map for key-value pairs.
Dynamic array container with automatic resizing.
Lazy and scalable dynamic array implementation.
Dynamic doubly linked list implementation.
Dynamic map with open hashing.
Dynamic key-value map based on balanced binary search trees.
Dynamic set implementations based on hash tables.
Dynamic set implementations based on balanced binary search trees.