1 #ifndef _IOTRELATION_HPP__
2 #define _IOTRELATION_HPP__
5 #include <unordered_map>
9 /** This is the IoTRelation implementation for C++
11 * @author Rahmadi Trimananda <rahmadi.trimananda @ uci.edu>
15 template <class K,class V>
18 unordered_multimap<K,V> rel;
21 IoTRelation(unordered_multimap<K,V> const& s);
24 typename unordered_multimap<K,V>::const_iterator find(const K& k); // Find the object based on key
25 bool empty(); // Test is empty?
26 typename unordered_multimap<K,V>::const_iterator begin(); // Iterator
27 typename unordered_multimap<K,V>::const_iterator end(); // Iterator
28 std::pair<typename unordered_multimap<K,V>::const_iterator,
29 typename unordered_multimap<K,V>::const_iterator>
30 equal_range(const K& k); // Equal range iterator
31 int size(); // Set size
32 unordered_multimap<K,V> values(); // Return set contents
39 template <class K,class V>
40 IoTRelation<K,V>::IoTRelation() {
48 template <class K,class V>
49 IoTRelation<K,V>::IoTRelation(const unordered_multimap<K,V>& r) {
58 template <class K,class V>
59 IoTRelation<K,V>::~IoTRelation() {
65 * Find the object k in the set
67 template <class K,class V>
68 typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::find(const K& k) {
75 * Return the "begin" iterator
77 template <class K,class V>
78 typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::begin() {
85 * Return the "end" iterator
87 template <class K,class V>
88 typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::end() {
95 * Return the "equal_range" iterator
97 template <class K,class V>
98 std::pair<typename unordered_multimap<K,V>::const_iterator,
99 typename unordered_multimap<K,V>::const_iterator>
100 IoTRelation<K,V>::equal_range(const K& k) {
102 return rel.equal_range(k);
107 * Return the size of the set
109 template <class K,class V>
110 int IoTRelation<K,V>::size() {
117 * Return a new copy of the set
119 template <class K,class V>
120 unordered_multimap<K,V> IoTRelation<K,V>::values() {
122 return new unordered_multimap<K,V>(rel);