* @since 2016-09-06
*/
template <class K,class V>
-class IoTRelation {
+class IoTRelation final {
private:
const unordered_multimap<K,V>* rel;
public:
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
};
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);
}
* 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);
}