The SimpleCxxLib package


#include "set.h"

class Set<ValueType>

This class stores a collection of distinct elements.
Constructor
Set() Creates an empty set of the specified element type.
Methods
add(value) Adds an element to this set, if it was not already there.
clear() Removes all elements from this set.
contains(value) Returns true if the specified value is in this set.
first() Returns the first value in the set in the order established by the for iterator.
isEmpty() Returns true if this set contains no elements.
isSubsetOf(set2) Implements the subset relation for sets.
mapAll(fn) Iterates through the elements of the set and calls fn(value) for each one.
remove(value) Removes an element from this set.
size() Returns the number of elements in this set.
toString() Converts the set to a printable string representation.
Operators
set1 != set2 Returns true if set1 and set2 are different.
set1 * set2 Returns the intersection of sets set1 and set2, which is the set of all elements that appear in both.
set1 *= set2; Removes any elements from set1 that are not present in set2.
set1 + set2 Returns the union of sets set1 and set2, which is the set of elements that appear in at least one of the two sets.
set1 += set2; Adds all of the elements from set2 (or the single specified value) to set1.
set1 - set2 Returns the difference of sets set1 and set2, which is all the elements that appear in set1 but not set2.
set1 -= set2; Removes the elements from set2 (or the single specified value) from set1.
set1 == set2 Returns true if set1 and set2 contain the same elements.

Constructor detail


Set();
Creates an empty set of the specified element type.

Usage:

Set<ValueType> set;
Set<ValueType> set = { value1, value2, value3 };

Method detail


int size() const;
Returns the number of elements in this set.

Usage:

count = set.size();

bool isEmpty() const;
Returns true if this set contains no elements.

Usage:

if (set.isEmpty()) ...

void add(const ValueType & value);
void insert(const ValueType & value);
Adds an element to this set, if it was not already there. For compatibility with the STL set class, this method is also exported as insert.

Usage:

set.add(value);

void remove(const ValueType & value);
Removes an element from this set. If the value was not contained in the set, no error is generated and the set remains unchanged.

Usage:

set.remove(value);

bool contains(const ValueType & value) const;
Returns true if the specified value is in this set.

Usage:

if (set.contains(value)) ...

bool isSubsetOf(const Set & set2) const;
Implements the subset relation for sets. This method returns true if every element of this set is contained in set2.

Usage:

if (set.isSubsetOf(set2)) ...

void clear();
Removes all elements from this set.

Usage:

set.clear();

ValueType first() const;
Returns the first value in the set in the order established by the for iterator. If the set is empty, first generates an error.

Usage:

ValueType value = set.first();

string toString();
Converts the set to a printable string representation.

Usage:

string str = set.toString();

void mapAll(void (*fn)(ValueType)) const;
void mapAll(void (*fn)(const ValueType &)) const;
void mapAll(FunctorType fn) const;
Iterates through the elements of the set and calls fn(value) for each one. The values are processed in ascending order, as defined by the comparison function.

Usage:

set.mapAll(fn);

Operator detail


bool operator==(const Set & set2) const;
Returns true if set1 and set2 contain the same elements.

Usage:

set1 == set2

bool operator!=(const Set & set2) const;
Returns true if set1 and set2 are different.

Usage:

set1 != set2

Set operator+(const Set & set2) const;
Set operator+(const ValueType & element) const;
Returns the union of sets set1 and set2, which is the set of elements that appear in at least one of the two sets. The right hand set can be replaced by an element of the value type, in which case the operator returns a new set formed by adding that element.

Usage:

set1 + set2
set1 + element

Set operator*(const Set & set2) const;
Returns the intersection of sets set1 and set2, which is the set of all elements that appear in both.

Usage:

set1 * set2

Set operator-(const Set & set2) const;
Set operator-(const ValueType & element) const;
Returns the difference of sets set1 and set2, which is all the elements that appear in set1 but not set2. The right hand set can be replaced by an element of the value type, in which case the operator returns a new set formed by removing that element.

Usage:

set1 - set2
set1 - element

Set & operator+=(const Set & set2);
Set & operator+=(const ValueType & value);
Adds all of the elements from set2 (or the single specified value) to set1. As a convenience, the Set package also overloads the comma operator so that it is possible to initialize a set like this:
   Set digits;
   digits += 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

Usage:

set1 += set2;
set1 += value;

Set & operator*=(const Set & set2);
Removes any elements from set1 that are not present in set2.

Usage:

set1 *= set2;

Set & operator-=(const Set & set2);
Set & operator-=(const ValueType & value);
Removes the elements from set2 (or the single specified value) from set1. As a convenience, the Set package also overloads the comma operator so that it is possible to remove multiple elements from a set like this:
   digits -= 0, 2, 4, 6, 8;
which removes the values 0, 2, 4, 6, and 8 from the set digits.

Usage:

set1 -= set2;
set1 -= value;