|
| XTrie & | operator= (const XTrie &)=delete |
| constexpr | XTrie () noexcept |
| constexpr | XTrie (const XTrie &) noexcept=delete |
| constexpr | XTrie (XTrie &&other) noexcept |
- Note
- These operations do not modify the input set(s); they create a new Set.
|
| template<std::random_access_iterator I> |
| Set | create (I begin, I end) |
| | Create a Set with all elements in [begin, end).
|
| template<std::ranges::input_range R> |
| Set | create (R &&r) |
| | Create a Set wih all elements in r.
|
| Set | create (std::initializer_list< D * > list) |
| | Create a Set wih all elements in list.
|
| Set | insert (Set s, D *d) |
| | Yields \(s \cup \{d\}\).
|
| Set | merge (Set s1, Set s2) |
| | Yields \(s_1 \cup s_2\).
|
| Set | erase (Set s, D *d) |
| | Yields \(s \setminus \{d\}\).
|
template<class D, class K, size_t N = 16>
class fe::XTrie< D, K, N >
Hash-consed sets of D*.
Small sets are sorted arrays, large ones paths in a trie; either way, equal sets are pointer-equal. This is an IndexedTrie as described here. K is a key trait that grants access to the two uint32_ts XTrie needs on D:
struct Key {
static uint32_t gid(const D*) noexcept;
static uint32_t tid(const D*) noexcept;
static void set_tid(const D*, uint32_t) noexcept;
static std::ostream& stream(std::ostream&, const D*);
};
N is the maximum size of an array set; bigger sets live in the trie.
Definition at line 44 of file xtrie.h.
template<class D, class K, size_t N = 16>
template<std::random_access_iterator I>