# 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(), |