bulkAdd

Add a set of edges to this graph and merge mutli-edges using merge.

void
bulkAdd
(
alias merge
G
R
)
(
ref G graph
,)
if (
is(G : Graph!Params,
Params...
) &&
isForwardRange!R
&&
is(ElementType!R == G.Edge)
)

Examples

auto g1 = Graph!(int, int)([1, 2]);

static g1.Edge sumWeights(g1.Edge[] multiEdge)
{
    auto sumOfWeights = multiEdge.map!"a.weight".sum;
    auto mergedEdge = multiEdge[0];
    mergedEdge.weight = sumOfWeights;

    return mergedEdge;
}

auto edges = [
    g1.edge(1, 2, 1),
    g1.edge(1, 2, 1),
    g1.edge(1, 2, 1),
    g1.edge(2, 3, 2),
    g1.edge(2, 3, 2),
    g1.edge(3, 4, 3),
];
g1.bulkAdd!sumWeights(edges);
assert(g1.edges == [
    g1.edge(1, 2, 3),
    g1.edge(2, 3, 4),
    g1.edge(3, 4, 3),
]);

Meta