ORIGINAL
|
Skip List based implementation of the set interface. More...
#include <sets.h>
Classes | |
class | Iterator |
Forward iterator for JSet. More... | |
Public Member Functions | |
JSet (Compare comp=Compare{}, ALLOC alloc=ALLOC{}) | |
Constructs empty JSet. | |
JSet (const JSet &other) | |
Copy constructor. | |
JSet & | operator= (const JSet &other) |
Copy assignment operator. | |
JSet (JSet &&other) noexcept | |
Move constructor. | |
JSet & | operator= (JSet &&other) noexcept |
Move assignment operator. | |
void | swap (JSet &other) noexcept |
Swaps contents with another JSet. | |
u_integer | size () const override |
Gets number of elements. | |
bool | contains (const TYPE &e) const override |
Checks if element exists. | |
bool | add (const TYPE &e) override |
Adds new element. | |
bool | remove (const TYPE &e) override |
Removes element. | |
Iterator * | begins () const override |
Gets begin iterator. | |
Iterator * | ends () const override |
Gets end iterator. | |
std::string | className () const override |
Gets class name. | |
std::string | toString (bool enter) const override |
Converts to string representation. | |
~JSet () override | |
Destructor. | |
![]() | |
iterAdaptor | begin () |
Returns an iterator adapter pointing to the beginning of the container. | |
iterAdaptor | begin () const |
Returns a const iterator adapter pointing to the beginning of the container. | |
iterAdaptor | end () |
Returns an iterator adapter pointing to the end sentinel of the container. | |
iterAdaptor | end () const |
Returns a const iterator adapter pointing to the end sentinel of the container. | |
iterAdaptor | first () |
Returns an iterator adapter pointing to the first element. | |
iterAdaptor | first () const |
Returns a const iterator adapter pointing to the first element. | |
iterAdaptor | last () |
Returns an iterator adapter pointing to the last element. | |
iterAdaptor | last () const |
Returns a const iterator adapter pointing to the last element. | |
void | forEach (Callback operation=Callback{}) |
Applies a given operation to each element in the iterable container. | |
void | forEach (const Callback &operation=Callback{}) const |
Applies a given operation to each element in the iterable container (const version). | |
auto | forEach (Callback operation) -> void |
auto | forEach (const Callback &operation) const -> void |
coroutine::generator< T > | generator () const |
Creates a coroutine generator that yields elements from this container. | |
![]() | |
operator std::string () const | |
Explicit conversion to std::string. | |
operator const char * () const | |
Explicit conversion to C-style string. | |
const char * | toCString (bool enter) const |
Direct C-string access with formatting control. | |
template<typename TYPE > | |
auto | formatString (const TYPE &t) -> std::string |
template<typename TYPE > | |
auto | formatCString (const TYPE &t) -> const char * |
template<typename TYPE > | |
auto | formatEnum (const TYPE &t) -> std::string |
template<typename TYPE > | |
auto | formatString (TYPE *const &ptr) -> std::string |
Friends | |
class | Iterator |
Additional Inherited Members | |
![]() | |
using | T = std::remove_const_t< const TYPE > |
![]() | |
template<typename TYPE > | |
static std::string | formatString (const TYPE &t) |
Universal value-to-string conversion with type-specific formatting. | |
template<Printable TYPE> | |
static std::string | formatString (const TYPE &t) |
Specialization for types deriving from printable. | |
template<EnumType TYPE> | |
static std::string | formatString (const TYPE &t) |
Specialization for enum types with type-safe formatting. | |
template<typename TYPE > | |
static std::string | formatString (TYPE *const &ptr) |
Pointer-specific formatting with null safety. | |
template<typename TYPE > | |
static const char * | formatCString (const TYPE &t) |
C-string cache for temporary usage with static storage. | |
template<typename TYPE > | |
static std::string | formatEnum (const TYPE &t) |
Enum formatting utility with underlying value extraction. | |
template<> | |
auto | formatString (const char &t) -> std::string |
template<> | |
auto | formatString (const bool &t) -> std::string |
template<> | |
auto | formatString (const char *const &ptr) -> std::string |
Skip List based implementation of the set interface.
TYPE | Element type (must be comparable) |
Compare | Comparison function type (default: increaseComparator<TYPE>) |
ALLOC | Allocator type (default: allocator<couple<const TYPE, const bool>>) |
This class provides a concrete implementation of the set interface using a probabilistic skip list. It combines the functionality of:
Performance Characteristics:
The implementation guarantees:
|
explicit |
Constructs empty JSet.
comp | Comparison function to use |
alloc | Allocator to use |
Copy constructor.
other | JSet to copy |
Performs deep copy of all elements and skip list structure
Move constructor.
other | JSet to move from |
Transfers ownership of resources from other
|
overridedefault |
Destructor.
Cleans up all skip list nodes and allocated memory
Adds new element.
e | Element to add |
|
overridevirtual |
Gets begin iterator.
Implements original::iterable< const TYPE >.
|
overridevirtual |
Checks if element exists.
e | Element to check |
|
overridevirtual |
Gets end iterator.
Implements original::iterable< const TYPE >.
original::JSet< TYPE, Compare, ALLOC > & original::JSet< TYPE, Compare, ALLOC >::operator= | ( | const JSet< TYPE, Compare, ALLOC > & | other | ) |
|
noexcept |
Removes element.
e | Element to remove |
|
override |
Gets number of elements.
Swaps contents with another JSet.
other | JSet to swap with |
Efficiently exchanges:
Performance: O(1) - pointer swaps only Iterator Invalidation: All iterators from both sets are invalidated
Example usage:
|
overridevirtual |
Converts to string representation.
enter | Add newline if true |
Reimplemented from original::printable.