KrisLibrary  1.0.0
Subset.h
1 #ifndef STRUCTS_SUBSET_H
2 #define STRUCTS_SUBSET_H
3 
4 #include <vector>
5 #include <iostream>
6 
13 struct Subset
14 {
15  Subset(int maxItem=0);
16  Subset(const Subset& s);
17  Subset(const std::vector<bool>& bits);
18  /*
19  typedef std::set<int>::iterator iterator;
20  typedef std::set<int>::const_iterator const_iterator;
21  inline std::set<int>::iterator begin() { return items.begin(); }
22  inline std::set<int>::iterator end() { return items.end(); }
23  inline std::set<int>::const_iterator begin() const { return items.begin(); }
24  inline std::set<int>::const_iterator end() const { return items.end(); }
25  */
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;
38  //set union
39  Subset operator + (const Subset& s) const;
40  //set complement
41  Subset operator - () const;
42  //set difference
43  Subset operator - (const Subset& s) const;
44  //set intersection
45  Subset operator & (const Subset& s) 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;
54 
55  int maxItem;
56  //implementation 1: STL set
57  //std::set<int> items;
58  //implementation 2: sorted vector
59  std::vector<int> items;
60 };
61 
62 std::ostream& operator << (std::ostream& out,const Subset& s);
63 
64 #endif
65 
A finite subset of numbered items with convenient operators for union, intersection, difference, etc.
Definition: Subset.h:13