title: Pointer/Reference to element in std::unordered_set
body: <p>im using a <code>std::unordered_set</code> to store my data object.
  But now i want to create a pointer/reference to them, for example (without hash function ... ):</p>
  
  <pre><code>struct Node
  {
    Node* parent;
    ...
  };
  std::unordered_set&lt;Node&gt; list;
  </code></pre>
  
  <p>is it possible to use a <code>std::unordered_set&lt;Node&gt;::const_iterator</code> ?
  Im not sure how to figure out this information if <strong>(without removing elements!)</strong> the iterator "ordering" changes ?</p>
  
  <p><strong>UPDATE with more details for better understanding:</strong></p>
  
  <p>Ive choosed std::unordered_set because of the constant lookup time.
  To improve my C++ skills it would good to know what to change.</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include &lt;stdint.h&gt;
  #include &lt;vector&gt;
  
  #include &lt;unordered_set&gt;
  
  
  struct Link;
  struct Node
  {
      uint32_t id;
      std::unordered_set&lt;Link&gt; link;
  
      Node(uint32_t id) : id(id)
      {
      };
  
      bool operator==(Node const&amp; rhs)
      {
          return id == rhs.id;
      }
  };
  
  struct Link
  {
      Node* parent;
      uint32_t param1; // ..... and more
  
      bool operator==(Link const&amp; rhs)
      {
          return parent == parent.rhs &amp;&amp; param1 == rhs.param1;
      }
  }
  
  
  namespace std
  {
      template&lt;&gt; struct hash&lt;Node&gt;
      {
          size_t operator()(Node const&amp; node) const
          {
              return hash&lt;uint32_t&gt;()(node.id);
          }
      };
  
      template&lt;&gt; struct hash&lt;Link&gt;
      {
          size_t operator()(Link const&amp; link) const
          {
              return  hash&lt;uint32_t&gt;()(link.param1) ^ hash&lt;Node&gt;()(*link.parent);
          }
      };    
  }
  
  int main()
  {
      std::unordered_set&lt;Node&gt; nodes;
      nodes.emplace( Node(1) );
      nodes.emplace( Node(2) );
      nodes.emplace( Node(3) );    
  }
  </code></pre>