1 /** |
1 /** |
2 \page getstart How to start using LEMON |
2 \page getstart How to start using LEMON |
3 |
3 |
|
4 In this page we detail how to start using LEMON, from downloading it to |
|
5 your computer, through the steps of installation to showing a simple |
|
6 "Hello World" type program that already uses LEMON. If anything is not |
|
7 clear write to our FAQ. |
|
8 |
|
9 \todo Is this FAQ thing a good idea here? Is there such a thing? If |
|
10 twice YES then a link comes here. |
|
11 |
|
12 |
|
13 |
|
14 |
4 \section downloadLEMON How to download LEMON |
15 \section downloadLEMON How to download LEMON |
5 |
16 |
6 You can download LEMON from ... |
17 You can download LEMON from the following web site: |
|
18 |
7 |
19 |
8 \section installLEMON How to install LEMON |
20 \section installLEMON How to install LEMON |
9 |
21 |
10 In order to install LEMON you have to do the following |
22 In order to install LEMON you have to do the following |
11 |
23 |
|
24 Ide kell írni: |
|
25 |
|
26 -Hol fordul (Windows-os fordító nem fordítja, unix/linux alatt gcc hanyas verziója kell) |
|
27 - |
|
28 |
12 \section helloworld My first program using LEMON |
29 \section helloworld My first program using LEMON |
13 |
30 |
14 Helloworld program |
31 If you have installed LEMON on your system you can paste the following code |
15 Link to quicktour |
32 segment into a file to have a first working program that uses library LEMON. |
|
33 |
|
34 \code |
|
35 #include <iostream> |
|
36 #include <lemon/list_graph.h> |
|
37 |
|
38 using namespace lemon; |
|
39 |
|
40 int main() |
|
41 { |
|
42 typedef ListGraph Graph; |
|
43 typedef Graph::Edge Edge; |
|
44 typedef Graph::InEdgeIt InEdgeIt; |
|
45 typedef Graph::OutEdgeIt OutEdgeIt; |
|
46 typedef Graph::EdgeIt EdgeIt; |
|
47 typedef Graph::Node Node; |
|
48 typedef Graph::NodeIt NodeIt; |
|
49 |
|
50 Graph g; |
|
51 |
|
52 for (int i = 0; i < 3; i++) |
|
53 g.addNode(); |
|
54 |
|
55 for (NodeIt i(g); i!=INVALID; ++i) |
|
56 for (NodeIt j(g); j!=INVALID; ++j) |
|
57 if (i != j) g.addEdge(i, j); |
|
58 |
|
59 std::cout << "Nodes:"; |
|
60 for (NodeIt i(g); i!=INVALID; ++i) |
|
61 std::cout << " " << g.id(i); |
|
62 std::cout << std::endl; |
|
63 |
|
64 std::cout << "Edges:"; |
|
65 for (EdgeIt i(g); i!=INVALID; ++i) |
|
66 std::cout << " (" << g.id(g.source(i)) << "," << g.id(g.target(i)) << ")"; |
|
67 std::cout << std::endl; |
|
68 |
|
69 \endcode |
|
70 |
|
71 |
|
72 ListGraph is one of LEMON's graph classes. It is based on linked lists, |
|
73 therefore iterating throuh its edges and nodes is fast. |
|
74 |
|
75 After some convenient typedefs we create a graph and add three nodes to it. |
|
76 Then we add edges to it to form a complete graph. |
|
77 |
|
78 Then we iterate through all nodes of the graph. We use a constructor of the |
|
79 node iterator to initialize it to the first node. The operator++ is used to |
|
80 step to the next node. Using operator++ on the iterator pointing to the last |
|
81 node invalidates the iterator i.e. sets its value to |
|
82 \ref lemon::INVALID "INVALID". This is what we exploit in the stop condition. |
|
83 |
|
84 We can also iterate through all edges of the graph very similarly. The |
|
85 \c target and |
|
86 \c source member functions can be used to access the endpoints of an edge. |
|
87 |
|
88 The previous code fragment prints out the following: |
|
89 |
|
90 \code |
|
91 Nodes: 2 1 0 |
|
92 |
|
93 Edges: (0,2) (1,2) (0,1) (2,1) (1,0) (2,0) |
|
94 \endcode |
|
95 |
|
96 |
|
97 If you want to see more features, go to the \ref quicktour "Quick Tour to |
|
98 LEMON", if you want to see see some demo programs then go to our |
|
99 \ref demoprograms "Demo Programs" page! |
16 |
100 |
17 |
101 |
18 */ |
102 */ |