The sets class can be used to perform set operations in your programs. It represents set elements as bits in a private array of unsigned long integers. The array size is a defined constant which can be changed to suit your application. The sets class supports the following set operations by means of C++ operator overloading: (1) union -- The union of two sets A, B is the set of all elements which belong to either A or B. In the sets class, the symbol + is the binary union operator. (2) intersection -- The intersection of two sets A, B is the set of all elements which belong to both A and B. The symbol * is the binary intersection operator:

A * B = {x: x is in A -and- x is in B } (3) complement -- In set theory, sets are subsets of a fixed universal set U. In the sets class, U is the set of elements numbered from 1 to MAX_WORDS * WORD_SIZE. The complement of set A is the set of elements belonging to U but not belonging to A. The symbol ~ is the unary complement operator: ~A = {x: x is in U, x is not in A } (4) difference -- The difference of two sets A, B is the set of all elements which belong to A less those in B. The symbol - is the binary difference operator: A - B = {x: x is in A, x is not in B} (5) symmetric difference -- The symmetric difference of two sets A, B is the set of all elements which belong to A or to B, but not both.