86 template <
typename TYPE,
87 typename HASH = hash<TYPE>,
88 typename ALLOC = allocator<couple<const TYPE, const bool>>>
90 public set<TYPE, ALLOC>,
214 void next()
const override;
219 void prev()
const override;
236 const TYPE get()
const override;
241 void set(
const TYPE& data)
override;
265 hashSet(
const hashSet& other);
274 hashSet&
operator=(
const hashSet& other);
282 hashSet(hashSet&& other)
noexcept;
292 hashSet&
operator=(hashSet&& other)
noexcept;
315 void swap(hashSet& other)
noexcept;
328 bool contains(
const TYPE &e)
const override;
335 bool add(
const TYPE &e)
override;
342 bool remove(
const TYPE &e)
override;
348 Iterator*
begins()
const override;
354 Iterator*
ends()
const override;
360 [[nodiscard]] std::string
className()
const override;
367 [[nodiscard]] std::string
toString(
bool enter)
const override;
397 template <
typename TYPE,
398 typename Compare = increaseComparator<TYPE>,
399 typename ALLOC = allocator<couple<const TYPE, const bool>>>
401 public set<TYPE, ALLOC>,
517 void next()
const override;
522 void prev()
const override;
540 const TYPE get()
const override;
546 void set(
const TYPE& data)
override;
572 treeSet(
const treeSet& other);
581 treeSet&
operator=(
const treeSet& other);
589 treeSet(treeSet&& other)
noexcept;
599 treeSet&
operator=(treeSet&& other)
noexcept;
622 void swap(treeSet& other)
noexcept;
635 bool contains(
const TYPE &e)
const override;
642 bool add(
const TYPE &e)
override;
649 bool remove(
const TYPE &e)
override;
655 Iterator*
begins()
const override;
661 Iterator*
ends()
const override;
667 [[nodiscard]] std::string
className()
const override;
674 [[nodiscard]] std::string
toString(
bool enter)
const override;
708 template <
typename TYPE,
712 public set<TYPE, ALLOC>,
830 void next()
const override;
835 void prev()
const override;
852 const TYPE get()
const override;
857 void set(
const TYPE& data)
override;
883 JSet(
const JSet& other);
900 JSet(JSet&& other)
noexcept;
933 void swap(JSet& other)
noexcept;
946 bool contains(
const TYPE &e)
const override;
953 bool add(
const TYPE &e)
override;
961 bool remove(
const TYPE &e)
override;
968 Iterator*
begins()
const override;
975 Iterator*
ends()
const override;
981 [[nodiscard]] std::string
className()
const override;
989 [[nodiscard]] std::string
toString(
bool enter)
const override;
1021 template <
typename TYPE,
typename HASH,
typename ALLOC>
1045 template <
typename TYPE,
typename COMPARE,
typename ALLOC>
1069 template <
typename TYPE,
typename COMPARE,
typename ALLOC>
1074template<
typename TYPE,
typename HASH,
typename ALLOC>
1076u_integer bucket, hashNode *node) : hashTable<TYPE, const bool, ALLOC, HASH>::Iterator(
1077 const_cast<vector<hashNode*, rebind_alloc_pointer>*>(buckets), bucket, node) {}
1079template<
typename TYPE,
typename HASH,
typename ALLOC>
1081 auto other_it =
dynamic_cast<const Iterator*
>(other);
1083 this->p_buckets == other_it->p_buckets &&
1084 this->cur_bucket == other_it->cur_bucket &&
1085 this->p_node == other_it->p_node;
1088template<
typename TYPE,
typename HASH,
typename ALLOC>
1093template<
typename TYPE,
typename HASH,
typename ALLOC>
1096 if (
this == &
other) {
1104template<
typename TYPE,
typename HASH,
typename ALLOC>
1110template<
typename TYPE,
typename HASH,
typename ALLOC>
1112 return "hashSet::Iterator";
1115template<
typename TYPE,
typename HASH,
typename ALLOC>
1120template<
typename TYPE,
typename HASH,
typename ALLOC>
1125template<
typename TYPE,
typename HASH,
typename ALLOC>
1131template<
typename TYPE,
typename HASH,
typename ALLOC>
1136template<
typename TYPE,
typename HASH,
typename ALLOC>
1141template<
typename TYPE,
typename HASH,
typename ALLOC>
1147 auto next =
ownerPtr(this->clone());
1148 if (!next->isValid()){
1156template<
typename TYPE,
typename HASH,
typename ALLOC>
1158 return other->atPrev(*
this);
1161template<
typename TYPE,
typename HASH,
typename ALLOC>
1166template<
typename TYPE,
typename HASH,
typename ALLOC>
1171template<
typename TYPE,
typename HASH,
typename ALLOC>
1177template<
typename TYPE,
typename HASH,
typename ALLOC>
1182template<
typename TYPE,
typename HASH,
typename ALLOC>
1187template<
typename TYPE,
typename HASH,
typename ALLOC>
1192template<
typename TYPE,
typename HASH,
typename ALLOC>
1197template<
typename TYPE,
typename HASH,
typename ALLOC>
1202template<
typename TYPE,
typename HASH,
typename ALLOC>
1207template<
typename TYPE,
typename HASH,
typename ALLOC>
1210 if (
this == &
other) {
1214 this->buckets = this->bucketsCopy(
other.buckets);
1215 this->size_ =
other.size_;
1216 this->hash_ =
other.hash_;
1217 if constexpr(ALLOC::propagate_on_container_copy_assignment::value) {
1219 this->rebind_alloc =
other.rebind_alloc;
1224template<
typename TYPE,
typename HASH,
typename ALLOC>
1226 this->operator=(std::move(
other));
1229template<
typename TYPE,
typename HASH,
typename ALLOC>
1232 if (
this == &
other) {
1236 this->buckets = std::move(
other.buckets);
1237 this->size_ =
other.size_;
1239 this->hash_ = std::move(
other.hash_);
1240 if constexpr(ALLOC::propagate_on_container_move_assignment::value) {
1242 this->rebind_alloc = std::move(
other.rebind_alloc);
1247template<
typename TYPE,
typename HASH,
typename ALLOC>
1256 if constexpr (ALLOC::propagate_on_container_swap::value) {
1262template<
typename TYPE,
typename HASH,
typename ALLOC>
1267template<
typename TYPE,
typename HASH,
typename ALLOC>
1269 return this->
find(e);
1272template<
typename TYPE,
typename HASH,
typename ALLOC>
1274 return this->insert(
e,
true);
1277template<
typename TYPE,
typename HASH,
typename ALLOC>
1279 return this->erase(
e);
1282template<
typename TYPE,
typename HASH,
typename ALLOC>
1286 if (this->buckets[0]) {
1287 return new Iterator(p_buckets, 0, this->buckets[0]);
1289 auto bucket = Iterator::findNextValidBucket(p_buckets, 0);
1293template<
typename TYPE,
typename HASH,
typename ALLOC>
1297 auto bucket = Iterator::findPrevValidBucket(p_buckets, this->buckets.size());
1305template<
typename TYPE,
typename HASH,
typename ALLOC>
1310template<
typename TYPE,
typename HASH,
typename ALLOC>
1312 std::stringstream
ss;
1313 ss << this->className();
1316 for (
auto it = this->begin();
it != this->end();
it.next()){
1329template<
typename TYPE,
typename HASH,
typename ALLOC>
1332template <
typename TYPE,
typename Compare,
typename ALLOC>
1334 : RBTreeType::Iterator(
tree,
cur) {}
1336template <
typename TYPE,
typename Compare,
typename ALLOC>
1339 auto other_it =
dynamic_cast<const Iterator*
>(other);
1341 this->tree_ == other_it->tree_ &&
1342 this->cur_ == other_it->cur_;
1345template <
typename TYPE,
typename Compare,
typename ALLOC>
1352template <
typename TYPE,
typename Compare,
typename ALLOC>
1356 if (
this == &
other) {
1360 this->tree_ =
other.tree_;
1361 this->cur_ =
other.cur_;
1365template <
typename TYPE,
typename Compare,
typename ALLOC>
1372template <
typename TYPE,
typename Compare,
typename ALLOC>
1375 return "treeSet::Iterator";
1378template <
typename TYPE,
typename Compare,
typename ALLOC>
1381 RBTreeType::Iterator::operator+=(
steps);
1384template <
typename TYPE,
typename Compare,
typename ALLOC>
1387 RBTreeType::Iterator::operator-=(
steps);
1390template <
typename TYPE,
typename Compare,
typename ALLOC>
1397template <
typename TYPE,
typename Compare,
typename ALLOC>
1400 return RBTreeType::Iterator::hasNext();
1403template <
typename TYPE,
typename Compare,
typename ALLOC>
1406 return RBTreeType::Iterator::hasPrev();
1409template <
typename TYPE,
typename Compare,
typename ALLOC>
1416 auto next =
ownerPtr(this->clone());
1417 if (!next->isValid()){
1425template <
typename TYPE,
typename Compare,
typename ALLOC>
1428 return other->atNext(*
this);
1431template <
typename TYPE,
typename Compare,
typename ALLOC>
1434 RBTreeType::Iterator::next();
1437template <
typename TYPE,
typename Compare,
typename ALLOC>
1440 RBTreeType::Iterator::prev();
1443template <
typename TYPE,
typename Compare,
typename ALLOC>
1447 auto it = this->clone();
1452template <
typename TYPE,
typename Compare,
typename ALLOC>
1455 return RBTreeType::Iterator::get().template
get<0>();
1458template <
typename TYPE,
typename Compare,
typename ALLOC>
1461 return RBTreeType::Iterator::get().template
get<0>();
1464template <
typename TYPE,
typename Compare,
typename ALLOC>
1470template <
typename TYPE,
typename Compare,
typename ALLOC>
1473 return RBTreeType::Iterator::isValid();
1476template<
typename TYPE,
typename Compare,
typename ALLOC>
1481template<
typename TYPE,
typename Compare,
typename ALLOC>
1486template<
typename TYPE,
typename Compare,
typename ALLOC>
1489 if (
this == &
other){
1493 this->destroyTree();
1494 this->root_ =
other.treeCopy();
1495 this->size_ =
other.size_;
1496 this->compare_ =
other.compare_;
1497 if constexpr(ALLOC::propagate_on_container_copy_assignment::value) {
1499 this->rebind_alloc =
other.rebind_alloc;
1504template<
typename TYPE,
typename Compare,
typename ALLOC>
1506 this->operator=(std::move(
other));
1509template<
typename TYPE,
typename Compare,
typename ALLOC>
1512 if (
this == &
other){
1516 this->destroyTree();
1517 this->root_ =
other.root_;
1518 other.root_ =
nullptr;
1519 this->size_ =
other.size_;
1521 this->compare_ = std::move(
other.compare_);
1522 if constexpr(ALLOC::propagate_on_container_move_assignment::value) {
1524 this->rebind_alloc = std::move(
other.rebind_alloc);
1529template<
typename TYPE,
typename Compare,
typename ALLOC>
1538 if constexpr (ALLOC::propagate_on_container_swap::value) {
1544template<
typename TYPE,
typename Compare,
typename ALLOC>
1549template<
typename TYPE,
typename Compare,
typename ALLOC>
1551 return this->
find(e);
1554template<
typename TYPE,
typename Compare,
typename ALLOC>
1556 return this->insert(
e,
true);
1559template<
typename TYPE,
typename Compare,
typename ALLOC>
1561 return this->erase(
e);
1564template <
typename TYPE,
typename Compare,
typename ALLOC>
1571template <
typename TYPE,
typename Compare,
typename ALLOC>
1578template<
typename TYPE,
typename Compare,
typename ALLOC>
1583template<
typename TYPE,
typename Compare,
typename ALLOC>
1585 std::stringstream
ss;
1586 ss << this->className();
1589 for (
auto it = this->begin();
it != this->end();
it.next()){
1602template<
typename TYPE,
typename Compare,
typename ALLOC>
1605template<
typename TYPE,
typename Compare,
typename ALLOC>
1612template<
typename TYPE,
typename Compare,
typename ALLOC>
1616template<
typename TYPE,
typename Compare,
typename ALLOC>
1620template<
typename TYPE,
typename Compare,
typename ALLOC>
1623 skipListType::Iterator::operator=(
other);
1627template<
typename TYPE,
typename Compare,
typename ALLOC>
1633template<
typename TYPE,
typename Compare,
typename ALLOC>
1636 return "JSet::Iterator";
1639template<
typename TYPE,
typename Compare,
typename ALLOC>
1641 skipListType::Iterator::operator+=(
steps);
1644template<
typename TYPE,
typename Compare,
typename ALLOC>
1649template<
typename TYPE,
typename Compare,
typename ALLOC>
1655 return this > &
other ?
1656 std::numeric_limits<integer>::max() :
1657 std::numeric_limits<integer>::min();
1658 return skipListType::Iterator::operator-(*
other_it);
1661template<
typename TYPE,
typename Compare,
typename ALLOC>
1663 return skipListType::Iterator::hasNext();
1666template<
typename TYPE,
typename Compare,
typename ALLOC>
1671template<
typename TYPE,
typename Compare,
typename ALLOC>
1682template<
typename TYPE,
typename Compare,
typename ALLOC>
1685 return other->atPrev(*
this);
1688template<
typename TYPE,
typename Compare,
typename ALLOC>
1690 skipListType::Iterator::next();
1693template<
typename TYPE,
typename Compare,
typename ALLOC>
1698template<
typename TYPE,
typename Compare,
typename ALLOC>
1704template<
typename TYPE,
typename Compare,
typename ALLOC>
1706 return skipListType::Iterator::get().template
get<0>();
1709template<
typename TYPE,
typename Compare,
typename ALLOC>
1711 return skipListType::Iterator::get().template
get<0>();
1714template<
typename TYPE,
typename Compare,
typename ALLOC>
1719template<
typename TYPE,
typename Compare,
typename ALLOC>
1721 return skipListType::Iterator::isValid();
1724template<
typename TYPE,
typename Compare,
typename ALLOC>
1729template<
typename TYPE,
typename Compare,
typename ALLOC>
1734template<
typename TYPE,
typename Compare,
typename ALLOC>
1737 if (
this == &
other){
1741 this->listDestroy();
1742 this->head_ =
other.listCopy();
1743 this->size_ =
other.size_;
1744 this->compare_ =
other.compare_;
1745 if constexpr(ALLOC::propagate_on_container_copy_assignment::value) {
1747 this->rebind_alloc =
other.rebind_alloc;
1752template<
typename TYPE,
typename Compare,
typename ALLOC>
1754 this->operator=(std::move(
other));
1757template<
typename TYPE,
typename Compare,
typename ALLOC>
1760 if (
this == &
other){
1764 this->listDestroy();
1765 this->head_ =
other.head_;
1767 this->size_ =
other.size_;
1769 this->compare_ = std::move(
other.compare_);
1770 if constexpr(ALLOC::propagate_on_container_move_assignment::value) {
1772 this->rebind_alloc = std::move(
other.rebind_alloc);
1777template<
typename TYPE,
typename Compare,
typename ALLOC>
1786 if constexpr (ALLOC::propagate_on_container_swap::value) {
1792template<
typename TYPE,
typename Compare,
typename ALLOC>
1797template<
typename TYPE,
typename Compare,
typename ALLOC>
1799 return this->
find(e);
1802template<
typename TYPE,
typename Compare,
typename ALLOC>
1804 return this->insert(
e,
true);
1807template<
typename TYPE,
typename Compare,
typename ALLOC>
1809 return this->erase(
e);
1812template<
typename TYPE,
typename Compare,
typename ALLOC>
1815 return new Iterator(this->head_->getPNext(1));
1818template<
typename TYPE,
typename Compare,
typename ALLOC>
1821 return new Iterator(this->findLastNode());
1824template<
typename TYPE,
typename Compare,
typename ALLOC>
1829template<
typename TYPE,
typename Compare,
typename ALLOC>
1831 std::stringstream
ss;
1832 ss << this->className();
1835 for (
auto it = this->begin();
it != this->end();
it.next()){
1848template<
typename TYPE,
typename Compare,
typename ALLOC>
1851template <
typename TYPE,
typename HASH,
typename ALLOC>
1858template <
typename TYPE,
typename COMPARE,
typename ALLOC>
1865template <
typename TYPE,
typename COMPARE,
typename ALLOC>
Red-Black Tree implementation header.
Memory allocation interface and implementations.
Forward iterator for JSet.
Definition sets.h:738
void prev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1694
bool hasNext() const override
Checks if more elements exist in forward direction.
Definition sets.h:1662
bool atNext(const iterator< const TYPE > *other) const override
Checks if other is next to this.
Definition sets.h:1683
Iterator & operator=(const Iterator &other)
Copy assignment operator.
Definition sets.h:1622
Iterator(skipListNode *cur)
Constructs iterator pointing to specific skip list node.
Definition sets.h:1613
Iterator * getPrev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1700
void next() const override
Moves to next element.
Definition sets.h:1689
void operator-=(integer steps) const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1645
std::string className() const override
Gets iterator class name.
Definition sets.h:1635
void operator+=(integer steps) const override
Advances iterator by steps.
Definition sets.h:1640
bool hasPrev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1667
const TYPE & get() override
Gets current element (non-const)
Definition sets.h:1705
bool atPrev(const iterator< const TYPE > *other) const override
Checks if other is previous to this.
Definition sets.h:1672
void set(const TYPE &data) override
Not supported (throws unSupportedMethodError)
Definition sets.h:1715
Iterator * clone() const override
Creates a copy of this iterator.
Definition sets.h:1629
bool isValid() const override
Checks if iterator is valid.
Definition sets.h:1720
Skip List based implementation of the set interface.
Definition sets.h:714
void swap(JSet &other) noexcept
Swaps contents with another JSet.
Definition sets.h:1778
JSet(Compare comp=Compare{}, ALLOC alloc=ALLOC{})
Constructs empty JSet.
Definition sets.h:1725
std::string className() const override
Gets class name.
Definition sets.h:1825
~JSet() override
Destructor.
JSet & operator=(const JSet &other)
Copy assignment operator.
Definition sets.h:1736
Iterator * begins() const override
Gets begin iterator.
Definition sets.h:1814
std::string toString(bool enter) const override
Converts to string representation.
Definition sets.h:1830
bool add(const TYPE &e) override
Adds new element.
Definition sets.h:1803
bool remove(const TYPE &e) override
Removes element.
Definition sets.h:1808
u_integer size() const override
Gets number of elements.
Definition sets.h:1793
bool contains(const TYPE &e) const override
Checks if element exists.
Definition sets.h:1798
Iterator * ends() const override
Gets end iterator.
Definition sets.h:1820
Bidirectional iterator for RBTree.
Definition RBTree.h:219
Internal node class for Red-Black Tree.
Definition RBTree.h:51
Red-Black Tree container implementation.
Definition RBTree.h:40
Default memory allocator using allocators utilities.
Definition allocator.h:153
void swap(autoPtr &other) noexcept
Swaps the reference counters between two autoPtr instances.
Definition autoPtr.h:703
const TYPE * get() const
Get managed pointer const version.
Definition autoPtr.h:629
A base class for basic iterators.
Definition iterator.h:296
Forward iterator for hashSet.
Definition sets.h:121
bool atNext(const iterator< const TYPE > *other) const override
Checks if other is next to this.
Definition sets.h:1157
bool hasNext() const override
Checks if more elements exist.
Definition sets.h:1132
void operator-=(integer steps) const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1121
void next() const override
Moves to next element.
Definition sets.h:1162
bool atPrev(const iterator< const TYPE > *other) const override
Checks if other is previous to this.
Definition sets.h:1142
Iterator * clone() const override
Creates a copy of this iterator.
Definition sets.h:1106
bool hasPrev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1137
void set(const TYPE &data) override
Not supported (throws unSupportedMethodError)
Definition sets.h:1188
Iterator * getPrev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1173
Iterator & operator=(const Iterator &other)
Copy assignment operator.
Definition sets.h:1095
bool isValid() const override
Checks if iterator is valid.
Definition sets.h:1193
const TYPE & get() override
Gets current element (non-const)
Definition sets.h:1178
std::string className() const override
Gets iterator class name.
Definition sets.h:1111
void prev() const override
Not supported (throws unSupportedMethodError)
Definition sets.h:1167
void operator+=(integer steps) const override
Advances iterator by steps.
Definition sets.h:1116
Hash table based implementation of the set interface.
Definition sets.h:92
std::string className() const override
Gets class name.
Definition sets.h:1306
void swap(hashSet &other) noexcept
Swaps contents with another hashSet.
Definition sets.h:1248
u_integer size() const override
Gets number of elements.
Definition sets.h:1263
hashSet(HASH hash=HASH{}, ALLOC alloc=ALLOC{})
Constructs empty hashSet.
Definition sets.h:1198
bool add(const TYPE &e) override
Adds new element.
Definition sets.h:1273
std::string toString(bool enter) const override
Converts to string representation.
Definition sets.h:1311
bool remove(const TYPE &e) override
Removes element.
Definition sets.h:1278
bool contains(const TYPE &e) const override
Checks if element exists.
Definition sets.h:1268
hashSet & operator=(const hashSet &other)
Copy assignment operator.
Definition sets.h:1209
Iterator * ends() const override
Gets end iterator.
Definition sets.h:1295
Iterator * begins() const override
Gets begin iterator.
Definition sets.h:1284
void next() const
Advances to the next element.
Definition hashTable.h:634
couple< const K_TYPE, V_TYPE > & get()
Gets current key-value pair (non-const)
Definition hashTable.h:668
Iterator & operator=(const Iterator &other)
Copy assignment operator.
Definition hashTable.h:615
void operator+=(integer steps) const
Advances iterator by steps positions.
Definition hashTable.h:656
bool isValid() const
Checks if iterator points to valid element.
Definition hashTable.h:687
bool hasNext() const
Checks if more elements are available.
Definition hashTable.h:625
Internal node type for hash table storage.
Definition hashTable.h:71
Hash table implementation with separate chaining.
Definition hashTable.h:55
typename ALLOC::template rebind_alloc< hashNode * > rebind_alloc_pointer
Rebound allocator type for pointer storage.
Definition hashTable.h:174
Generic hash function object supporting multiple types.
Definition hash.h:62
A base class for iterable containers that support multiple iteration patterns.
Definition iterable.h:70
friend iterator< T > * operator-(const iterator< T > &it, integer steps)
Subtracts a number of steps from the iterator's current position and returns a new iterator.
Unique ownership smart pointer with move semantics.
Definition ownerPtr.h:37
Base class providing polymorphic string conversion capabilities.
Definition printable.h:39
static std::string formatString(const TYPE &t)
Universal value-to-string conversion with type-specific formatting.
Definition printable.h:339
Abstract base class for unique element containers.
Definition set.h:44
Forward iterator for skipList.
Definition skipList.h:164
Internal node class for Skip List.
Definition skipList.h:54
Skip List container implementation.
Definition skipList.h:45
Bidirectional iterator for treeSet.
Definition sets.h:427
bool isValid() const override
Checks if iterator is valid.
Definition sets.h:1471
void next() const override
Moves to next element.
Definition sets.h:1432
bool atPrev(const iterator< const TYPE > *other) const override
Checks if other is previous to this.
Definition sets.h:1410
void operator-=(integer steps) const override
Rewinds iterator by steps.
Definition sets.h:1385
const TYPE & get() override
Gets current element (non-const)
Definition sets.h:1453
void set(const TYPE &data) override
Not supported.
Definition sets.h:1465
std::string className() const override
Gets iterator class name.
Definition sets.h:1373
bool atNext(const iterator< const TYPE > *other) const override
Checks if other is next to this.
Definition sets.h:1426
void operator+=(integer steps) const override
Advances iterator by steps.
Definition sets.h:1379
Iterator & operator=(const Iterator &other)
Copy assignment operator.
Definition sets.h:1354
void prev() const override
Moves to previous element.
Definition sets.h:1438
bool hasNext() const override
Checks if more elements exist in forward direction.
Definition sets.h:1398
bool hasPrev() const override
Checks if more elements exist in backward direction.
Definition sets.h:1404
Iterator * getPrev() const override
Gets previous iterator.
Definition sets.h:1445
Iterator * clone() const override
Creates a copy of this iterator.
Definition sets.h:1367
Red-Black Tree based implementation of the set interface.
Definition sets.h:403
bool contains(const TYPE &e) const override
Checks if element exists.
Definition sets.h:1550
bool remove(const TYPE &e) override
Removes element.
Definition sets.h:1560
void swap(treeSet &other) noexcept
Swaps contents with another treeSet.
Definition sets.h:1530
treeSet(Compare comp=Compare{}, ALLOC alloc=ALLOC{})
Constructs empty treeSet.
Definition sets.h:1477
treeSet & operator=(const treeSet &other)
Copy assignment operator.
Definition sets.h:1488
Iterator * ends() const override
Gets end iterator.
Definition sets.h:1573
~treeSet() override
Destructor.
std::string className() const override
Gets class name.
Definition sets.h:1579
Iterator * begins() const override
Gets begin iterator.
Definition sets.h:1566
bool add(const TYPE &e) override
Adds new element.
Definition sets.h:1555
u_integer size() const override
Gets number of elements.
Definition sets.h:1545
std::string toString(bool enter) const override
Converts to string representation.
Definition sets.h:1584
Exception for unimplemented method calls.
Definition error.h:271
Comparator base class and concrete comparator classes.
Combines Comparable and CallbackOf for comparison callbacks.
Definition types.h:377
Generic pair container implementation.
std::uint32_t u_integer
32-bit unsigned integer type for sizes and indexes
Definition config.h:263
std::int64_t integer
64-bit signed integer type for arithmetic operations
Definition config.h:254
Implementation of hashTable container.
Provides a generic hashing utility and interface for hashable types.
Main namespace for the project Original.
Definition algorithms.h:21
TYPE find(coroutine::generator< TYPE > gen, Callback &&c)
Finds the first element satisfying a predicate.
Definition generators.h:863
Standard namespace extensions for original::alternative.
Definition allocator.h:351
void swap(original::objPoolAllocator< TYPE > &lhs, original::objPoolAllocator< TYPE > &rhs) noexcept
Specialization of std::swap for objPoolAllocator.
Definition allocator.h:635
Exclusive-ownership smart pointer implementation.
Abstract base class for set container implementations.
Skip List container implementation.