Boost logo

Boost :

From: Neal Fachan (neal_at_[hidden])
Date: 2001-01-12 18:34:28

Hi. I just recently started using the BGL. First, I want to say that BGL is
a great library. Thank you for providing it. I've had three
questions/problems with BGL so far. BTW, I'm using the CVS version with tag

First, there's an add_edge which takes an edge property, but there isn't an
add_vertex which takes a vertex property. It seems like either both or
neither should exist. I would prefer if there was a second version of
add_vertex which took the property.

Second, when using add_edge on a graph which checks for parallel edges, it
would be handy if the return pair always contained a valid edge descriptor,
even if the edge previously existed. I seem to have a lot of cases which
look like this:

    Edge e;
    bool created;
    boost::tie(e, created) = add_edge(v1, v2, g);
    if (!created)
        boost::tie(e, create) = edge(v1, v2);
    put(propertyMap, e, enabled);

It's not that big of a deal to have to make the "edge" call, but it seems
like add_edge must already have the existing edge to return created=false,
so it should be able to return it.

Third, adding custom property portably is kind of a pain right now. The
documentation reads that one should be able to create an empty struct/class,
but the examples show that you need conditional compilation based on
non-partial-specialization version uses an enum value for the instance,
while the "normal" version uses a real class instance, I have to
conditionally define the variable in a .cpp file. I've written some macros
to work around this, but it seems like the old version where you just had a
simple class and could create a simple instance when you needed it,
get(my_tag(), g), was a lot simpler.

Thanks again for providing a great library. I've definitely enjoyed using

Neal Fachan

Boost list run by bdawes at, gregod at, cpdaniel at, john at