title: Boost Graph with O(1) access to edges and vertices and multiple properties
body: <p>I have gone through BGL documentation and I'm trying to construct a directed graph with the properties below. Even though the documentation mentions bits and pieces, I can't seem to understand how to achieve these properties collectively through BGL. The properties I'm looking for are:</p>
  
  <ol>
  <li>O(1) access to vertices with some integer/string as key</li>
  <li>O(I) access to incoming or outgoing edges where I is the number of incident edges, i.e. through an adjacency list (O(1) access to edges would be cool, as well, through some key)</li>
  <li>Able to change multiple edge properties, i.e. weight, id, attached Custom data struct</li>
  <li>Able to change multiple vertex properties, i.e. id, attached Custom data structures</li>
  <li>Add/Remove Vertices and Edges</li>
  </ol>
  
  <p>Is there a way to construct a graph through BGL, with all of these properties? A code sample would be appreciated.</p>