template<class TKey, class TCompare = Compare<TKey>, class TSize = SizeT>
class evo::SetList< TKey, TCompare, TSize >
Set implemented as an ordered sequential array/list.
- Template Parameters
-
| TKey | Set key type |
| TCompare | Comparison type to use |
| TSize | Size type to use for size values (must be unsigned integer) – default: SizeT |
- Features
- Similar to STL set, with an implementation similar to STL vector
- Values are stored sequentially in memory as a dynamic array – random access with item() uses constant time
- Values are always unique (no duplicates)
- This uses binary search – lookups are
O(log n), inserts are O(n + log n) since values must be shifted to make room
- This uses List internally while keeping items ordered
- No memory allocated by new empty set
- Preallocates extra memory when buffer grows
- Sharing makes copying efficient
- See List features
C++11:
- Range-based for loop – see STL Compatibility
SetList<int> list;
for (auto num : list.asconst()) {
}
- Initialization lists
SetList<int> list = {3, 1, 2};
SetList<String> strlist = {"foo", "bar"};
- Move semantics
- Comparison
You can leave the default comparison type (Compare) or specify an alternative.
See: Primitives & Containers
- Iterators
Caution: Modifying or resizing a set will shift or invalidate existing iterators using it.
- Constructors
- Read Access
- Modifiers
- Examples
Example using a set of numbers
int main() {
set.add(10);
set.addsplit("30,40");
bool has10 = set.contains(10);
bool has50 = set.contains(50);
return 0;
}
Output:
Example using descending (reverse) order
int main() {
MySet set;
set.add(10);
set.add(30);
return 0;
}
Output:
Example using string set:
int main() {
while (iter_end && iter_end->starts(PREFIX))
++iter_end;
return 0;
}
Output:
|
| | SetList () |
| | Default constructor. More...
|
| |
| | SetList (const SetBaseType &src) |
| | Copy constructor. More...
|
| |
| | SetList (const ThisType &src) |
| | Copy constructor. More...
|
| |
| | SetList (std::initializer_list< Value > init) |
| | Sequence constructor (C++11). More...
|
| |
| | SetList (ThisType &&src) |
| | Move constructor (C++11). More...
|
| |
| | ~SetList () |
| | Destructor. More...
|
| |
| Value & | add (const Value &item, bool update=false) |
| | Add or update using given item. More...
|
| |
| template<class T > |
| Size | addfrom (const T &items, bool update=false) |
| | Add items from given list or set. More...
|
| |
| template<class T > |
| Size | addsplit (const T &str, char delim=',') |
| | Split delimited string into set items. More...
|
| |
| const ThisType & | asconst () const |
| | Explicitly use a const reference to this. More...
|
| |
| IterM | begin () |
| | Get iterator at first item (mutable). More...
|
| |
| Iter | begin () const |
| | Get iterator at first item (const). More...
|
| |
| Size | capacity () const |
| | Get set capacity. More...
|
| |
| ThisType & | capacity (Size size) |
| | Set capacity for set (modifier). More...
|
| |
| ThisType & | capacitymin (Size min) |
| | Set capacity to at least given minimum for set (modifier). More...
|
| |
| Iter | cbegin () const |
| | Get iterator at first item (const). More...
|
| |
| Iter | cend () const |
| | Get iterator at end (const). More...
|
| |
| ThisType & | clear () |
| | Clear by removing all items. More...
|
| |
| ThisType & | compact () |
| | Reduce capacity to fit current size (modifier). More...
|
| |
| bool | contains (const Value &value) const |
| | Get whether the set contains the given value. More...
|
| |
| bool | empty () const |
| | Get whether set is empty (size is 0). More...
|
| |
| IterM | end () |
| | Get iterator at end. More...
|
| |
| Iter | end () const |
| | Get iterator at end (const). More...
|
| |
| Value & | get (const Value &value, bool *created=NULL) |
| | Get value, create if needed (mutable). More...
|
| |
| const Compare & | get_compare () const |
| | Get comparison object being used for comparisons (const). More...
|
| |
| Compare & | get_compare () |
| | Get comparison object being used for comparisons. More...
|
| |
| const Value & | item (Size index) const |
| | Get item value at position (const). More...
|
| |
| Iter | iter (const Value &value) const |
| | Find (lookup) iterator for given value (const). More...
|
| |
| Iter | iter_lower (const Value &value) const |
| | Find first value greater or equal to given value (lower bound) (const). More...
|
| |
| IterM | iter_lowerM (const Value &value) |
| | Find first value greater or equal to given value (lower bound). More...
|
| |
| Iter | iter_upper (const Value &value) const |
| | Find first value greater than given value (upper bound) (const). More...
|
| |
| IterM | iter_upperM (const Value &value) |
| | Find first value greater than given value (upper bound). More...
|
| |
| IterM | iterM (const Value &value) |
| | Find (lookup) iterator for given value (mutable). More...
|
| |
| bool | null () const |
| | Get whether set is null. More...
|
| |
| bool | operator!= (const SetBaseType &set) const |
| | Inequality operator. More...
|
| |
| bool | operator!= (const ThisType &set) const |
| | Inequality operator. More...
|
| |
| ThisType & | operator= (ThisType &&src) |
| | Move assignment operator (C++11). More...
|
| |
| ThisType & | operator= (const SetBaseType &src) |
| | Assignment operator. More...
|
| |
| ThisType & | operator= (const ThisType &src) |
| | Assignment operator. More...
|
| |
| bool | operator== (const SetBaseType &set) const |
| | Equality operator. More...
|
| |
| bool | operator== (const ThisType &set) const |
| | Equality operator. More...
|
| |
| bool | ordered () const |
| | Get whether set is ordered. More...
|
| |
| bool | remove (const Value &value) |
| | Find and remove given value. More...
|
| |
| Size | remove (const Value &value, Size count) |
| | Find and remove value and following values. More...
|
| |
| bool | remove (typename SetBaseType::IterM &iter, IteratorDir dir=iterNONE) |
| | Remove item using given iterator. More...
|
| |
| bool | remove (IterM &iter, IteratorDir dir=iterNONE) |
| | Remove item using given iterator. More...
|
| |
| Size | remove_range (IterM &start, Size count) |
| | Remove range of values using iterator (mutable). More...
|
| |
| Size | remove_range (IterM &start, IterM &end) |
| | Remove range of values using iterators (mutable). More...
|
| |
| Size | removeat (Size index, Size count=1) |
| | Remove value(s) at given position/index (mutable). More...
|
| |
| ThisType & | reserve (Size size) |
| | Reserve space for new items. More...
|
| |
| ThisType & | set () |
| | Set as null and empty. More...
|
| |
| ThisType & | set (const SetBaseType &src) |
| | Set as copy of given set. More...
|
| |
| ThisType & | set (const ThisType &src) |
| | Set as copy of given set. More...
|
| |
| ThisType & | setempty () |
| | Set as empty but not null. More...
|
| |
| bool | shared () const |
| | Get whether shared. More...
|
| |
| Size | size () const |
| | Get set size (number of items). More...
|
| |
| ThisType & | unshare () |
| | Make data unique by allocating new buffer, if needed (modifier). More...
|
| |