* @since 2016-09-06
*/
template <class T>
-class IoTSet {
+class IoTSet final {
private:
- unordered_set<T> set;
+ const unordered_set<T>* set;
public:
IoTSet();
- IoTSet(unordered_set<T> const& s);
+ IoTSet(const unordered_set<T>* s);
~IoTSet();
public:
typename unordered_set<T>::const_iterator find(const T& k); // Find the object
typename unordered_set<T>::const_iterator begin(); // Iterator
typename unordered_set<T>::const_iterator end(); // Iterator
int size(); // Set size
- unordered_set<T> values(); // Return set contents
+ unordered_set<T>* values(); // Return set contents
};
* Useful constructor
*/
template <class T>
-IoTSet<T>::IoTSet(const unordered_set<T>& s) {
+IoTSet<T>::IoTSet(const unordered_set<T>* s) {
set = s;
}
template <class T>
IoTSet<T>::~IoTSet() {
- //free(&set);
}
template <class T>
typename unordered_set<T>::const_iterator IoTSet<T>::find(const T& k) {
- return set.find(k);
+ return (new unordered_set<T>(*set))->find(k);
}
template <class T>
typename unordered_set<T>::const_iterator IoTSet<T>::begin() {
- return set.begin();
+ return (new unordered_set<T>(*set))->begin();
}
template <class T>
typename unordered_set<T>::const_iterator IoTSet<T>::end() {
- return set.end();
+ return (new unordered_set<T>(*set))->end();
}
template <class T>
int IoTSet<T>::size() {
- return set.size();
+ return set->size();
}
* Return a new copy of the set
*/
template <class T>
-unordered_set<T> IoTSet<T>::values() {
+unordered_set<T>* IoTSet<T>::values() {
- return new unordered_set<T>(set);
+ return new unordered_set<T>(*set);
}
#endif