# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1250787272 -7200
# Node ID e8953d05253425a6d7ab6a41c0dd0c7ecf5af5d2
# Parent eef9c32052d08b43a8a9336942d44519af31637d
Add reserve functions to ListGraph and SmartGraph (#311)
ListDigraph and SmartDigraph already have such functions.
diff --git a/lemon/list_graph.h b/lemon/list_graph.h
|
a
|
b
|
|
| 1311 | 1311 | Parent::clear(); |
| 1312 | 1312 | } |
| 1313 | 1313 | |
| | 1314 | /// Reserve memory for nodes. |
| | 1315 | |
| | 1316 | /// Using this function, it is possible to avoid superfluous memory |
| | 1317 | /// allocation: if you know that the graph you want to build will |
| | 1318 | /// be large (e.g. it will contain millions of nodes and/or edges), |
| | 1319 | /// then it is worth reserving space for this amount before starting |
| | 1320 | /// to build the graph. |
| | 1321 | /// \sa reserveEdge() |
| | 1322 | void reserveNode(int n) { nodes.reserve(n); }; |
| | 1323 | |
| | 1324 | /// Reserve memory for edges. |
| | 1325 | |
| | 1326 | /// Using this function, it is possible to avoid superfluous memory |
| | 1327 | /// allocation: if you know that the graph you want to build will |
| | 1328 | /// be large (e.g. it will contain millions of nodes and/or edges), |
| | 1329 | /// then it is worth reserving space for this amount before starting |
| | 1330 | /// to build the graph. |
| | 1331 | /// \sa reserveNode() |
| | 1332 | void reserveEdge(int m) { arcs.reserve(2 * m); }; |
| | 1333 | |
| 1314 | 1334 | /// \brief Class to make a snapshot of the graph and restore |
| 1315 | 1335 | /// it later. |
| 1316 | 1336 | /// |
diff --git a/lemon/smart_graph.h b/lemon/smart_graph.h
|
a
|
b
|
|
| 691 | 691 | Parent::clear(); |
| 692 | 692 | } |
| 693 | 693 | |
| | 694 | /// Reserve memory for nodes. |
| | 695 | |
| | 696 | /// Using this function, it is possible to avoid superfluous memory |
| | 697 | /// allocation: if you know that the graph you want to build will |
| | 698 | /// be large (e.g. it will contain millions of nodes and/or edges), |
| | 699 | /// then it is worth reserving space for this amount before starting |
| | 700 | /// to build the graph. |
| | 701 | /// \sa reserveEdge() |
| | 702 | void reserveNode(int n) { nodes.reserve(n); }; |
| | 703 | |
| | 704 | /// Reserve memory for edges. |
| | 705 | |
| | 706 | /// Using this function, it is possible to avoid superfluous memory |
| | 707 | /// allocation: if you know that the graph you want to build will |
| | 708 | /// be large (e.g. it will contain millions of nodes and/or edges), |
| | 709 | /// then it is worth reserving space for this amount before starting |
| | 710 | /// to build the graph. |
| | 711 | /// \sa reserveNode() |
| | 712 | void reserveEdge(int m) { arcs.reserve(2 * m); }; |
| | 713 | |
| 694 | 714 | public: |
| 695 | 715 | |
| 696 | 716 | class Snapshot; |
diff --git a/test/digraph_test.cc b/test/digraph_test.cc
|
a
|
b
|
|
| 35 | 35 | checkGraphNodeList(G, 0); |
| 36 | 36 | checkGraphArcList(G, 0); |
| 37 | 37 | |
| | 38 | G.reserveNode(3); |
| | 39 | G.reserveArc(4); |
| | 40 | |
| 38 | 41 | Node |
| 39 | 42 | n1 = G.addNode(), |
| 40 | 43 | n2 = G.addNode(), |
diff --git a/test/graph_test.cc b/test/graph_test.cc
|
a
|
b
|
|
| 38 | 38 | checkGraphEdgeList(G, 0); |
| 39 | 39 | checkGraphArcList(G, 0); |
| 40 | 40 | |
| | 41 | G.reserveNode(3); |
| | 42 | G.reserveEdge(3); |
| | 43 | |
| 41 | 44 | Node |
| 42 | 45 | n1 = G.addNode(), |
| 43 | 46 | n2 = G.addNode(), |