1 #ifndef STRUCTS_SUBSET_H 2 #define STRUCTS_SUBSET_H 17 Subset(
const std::vector<bool>& bits);
26 typedef std::vector<int>::iterator iterator;
27 typedef std::vector<int>::const_iterator const_iterator;
28 inline std::vector<int>::iterator begin() {
return items.begin(); }
29 inline std::vector<int>::iterator end() {
return items.end(); }
30 inline std::vector<int>::const_iterator begin()
const {
return items.begin(); }
31 inline std::vector<int>::const_iterator end()
const {
return items.end(); }
32 inline bool empty()
const {
return items.empty(); }
33 inline size_t size()
const {
return items.size(); }
34 bool operator < (
const Subset& s)
const;
35 bool operator > (
const Subset& s)
const;
36 bool operator == (
const Subset& s)
const;
37 bool operator != (
const Subset& s)
const;
41 Subset operator - ()
const;
46 void insert(
int item);
47 void insert_end(
int item);
48 void remove(
int item);
49 iterator find(
int item);
50 const_iterator find(
int item)
const;
51 inline void erase(iterator it) { items.erase(it); }
52 inline size_t count(
int item)
const {
return (find(item)==end()?0:1); }
53 bool is_subset(
const Subset& s)
const;
59 std::vector<int> items;
62 std::ostream& operator << (std::ostream& out,
const Subset& s);
A finite subset of numbered items with convenient operators for union, intersection, difference, etc.
Definition: Subset.h:13