* @since 2016-09-06
*/
template <class K,class V>
-class IoTRelation {
+class IoTRelation final {
private:
- unordered_multimap<K,V> rel;
+ const unordered_multimap<K,V>* rel;
public:
IoTRelation();
- IoTRelation(unordered_multimap<K,V> const& s);
+ //IoTRelation(unordered_multimap<K,V> const& s);
+ IoTRelation(const unordered_multimap<K,V>* s);
~IoTRelation();
public:
typename unordered_multimap<K,V>::const_iterator find(const K& k); // Find the object based on key
typename unordered_multimap<K,V>::const_iterator>
equal_range(const K& k); // Equal range iterator
int size(); // Set size
- unordered_multimap<K,V> values(); // Return set contents
+ unordered_multimap<K,V>* values(); // Return set contents
};
* Useful constructor
*/
template <class K,class V>
-IoTRelation<K,V>::IoTRelation(const unordered_multimap<K,V>& r) {
+//IoTRelation<K,V>::IoTRelation(const unordered_multimap<K,V>& r) {
+IoTRelation<K,V>::IoTRelation(const unordered_multimap<K,V>* r) {
rel = r;
}
template <class K,class V>
IoTRelation<K,V>::~IoTRelation() {
- //free(&set);
}
template <class K,class V>
typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::find(const K& k) {
- return rel.find(k);
+ return (new unordered_multimap<K,V>(*rel))->find(k);
}
template <class K,class V>
typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::begin() {
- return rel.begin();
+ return (new unordered_multimap<K,V>(*rel))->begin();
}
template <class K,class V>
typename unordered_multimap<K,V>::const_iterator IoTRelation<K,V>::end() {
- return rel.end();
+ return (new unordered_multimap<K,V>(*rel))->end();
}
typename unordered_multimap<K,V>::const_iterator>
IoTRelation<K,V>::equal_range(const K& k) {
- return rel.equal_range(k);
+ return (new unordered_multimap<K,V>(*rel))->equal_range(k);
}
template <class K,class V>
int IoTRelation<K,V>::size() {
- return rel.size();
+ return rel->size();
}
* Return a new copy of the set
*/
template <class K,class V>
-unordered_multimap<K,V> IoTRelation<K,V>::values() {
+unordered_multimap<K,V>* IoTRelation<K,V>::values() {
- return new unordered_multimap<K,V>(rel);
+ return new unordered_multimap<K,V>(*rel);
}
#endif