template <typename Key, typename Element>
class Item { // a (key, element) pair
private:
Key _key; // key value
Element _elem; // element
public:
Item(const Key& k = Key(), const Element& e = Element())
: _key(k), _elem(e) { } // constructor
const Key& key() const // gets the key (read only)
{ return _key; }
Element& element() // gets the element
{ return _elem; }
const Element& element() const // gets the element (read only)
{ return _elem; }
void setKey(const Key& k) // sets the key value
{ _key = k; }
void setElement(const Element& e) // sets the element
{ _elem = e; }
};