Boost.Graph has Compressed Sparse Row Graph which does something close to what you want. It is very memory friendly. As with other Boost graphs you can declare it directed, undirected, etc. and associate properties with its elements.
As a caveat, this graph is immutable, meaning you can create and populate it but not update later. You need to have all your edges ready when you generate the graph. See similar SO topic here