COIN-OR::LEMON - Graph Library

Changeset 784:9d6c3e8b2421 in lemon


Ignore:
Timestamp:
08/23/09 11:11:49 (15 years ago)
Author:
Peter Kovacs <kpeter@…>
Branch:
default
Phase:
public
Message:

Add a resize() function to HypercubeGraph? (#311)
just like the similar functions in other static graph structures,
and extend the test files to check these functions.

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lemon/hypercube_graph.h

    r782 r784  
    288288  /// differ only on one position in the binary form.
    289289  /// This class is completely static and it needs constant memory space.
    290   /// Thus you can neither add nor delete nodes or edges.
     290  /// Thus you can neither add nor delete nodes or edges, however
     291  /// the structure can be resized using resize().
    291292  ///
    292293  /// This type fully conforms to the \ref concepts::Graph "Graph concept".
     
    306307    /// Constructs a hypercube graph with \c dim dimensions.
    307308    HypercubeGraph(int dim) { construct(dim); }
     309
     310    /// \brief Resizes the graph
     311    ///
     312    /// This function resizes the graph. It fully destroys and
     313    /// rebuilds the structure, therefore the maps of the graph will be
     314    /// reallocated automatically and the previous values will be lost.
     315    void resize(int dim) {
     316      Parent::notifier(Arc()).clear();
     317      Parent::notifier(Edge()).clear();
     318      Parent::notifier(Node()).clear();
     319      construct(dim);
     320      Parent::notifier(Node()).build();
     321      Parent::notifier(Edge()).build();
     322      Parent::notifier(Arc()).build();
     323    }
    308324
    309325    /// \brief The number of dimensions.
  • test/digraph_test.cc

    r783 r784  
    379379  typedef FullDigraph Digraph;
    380380  DIGRAPH_TYPEDEFS(Digraph);
     381
    381382  Digraph G(num);
     383  check(G.nodeNum() == num && G.arcNum() == num * num, "Wrong size");
     384
     385  G.resize(num);
     386  check(G.nodeNum() == num && G.arcNum() == num * num, "Wrong size");
    382387
    383388  checkGraphNodeList(G, num);
  • test/graph_test.cc

    r783 r784  
    271271
    272272  Graph G(num);
     273  check(G.nodeNum() == num && G.edgeNum() == num * (num - 1) / 2,
     274        "Wrong size");
     275
     276  G.resize(num);
     277  check(G.nodeNum() == num && G.edgeNum() == num * (num - 1) / 2,
     278        "Wrong size");
     279
    273280  checkGraphNodeList(G, num);
    274281  checkGraphEdgeList(G, num * (num - 1) / 2);
     
    415422  check(G.height() == height, "Wrong row number");
    416423
     424  G.resize(width, height);
     425  check(G.width() == width, "Wrong column number");
     426  check(G.height() == height, "Wrong row number");
     427
    417428  for (int i = 0; i < width; ++i) {
    418429    for (int j = 0; j < height; ++j) {
     
    490501
    491502  HypercubeGraph G(dim);
     503  check(G.dimension() == dim, "Wrong dimension");
     504
     505  G.resize(dim);
     506  check(G.dimension() == dim, "Wrong dimension");
     507 
    492508  checkGraphNodeList(G, 1 << dim);
    493509  checkGraphEdgeList(G, dim * (1 << (dim-1)));
Note: See TracChangeset for help on using the changeset viewer.