.
     1 ETIK-OL-NOLIB-NEGRES full feature graph minimum concept. 
 
     3  Regota filozunk rajta hogy hogy is kene kinezni a fent emlitett concept-nek, 
 
     4 most 1 egesz konkret javaslatot irnek. A fo cel, hogy lenyegeben 
 
     5 minden operaciot a graf vegezzen, es az iteratorok csak vmi leiro szerepet 
 
     6 toltsenek be. Azt is megfigyeltuk, hogy a fo technikai nehezseg, hogy a c++ 
 
     7 nem tud a visszateresi ertek alapjan megkulonboztetni fuggvenyeket. Ennek 
 
     8 megfeleloen 2 javaslatot irok most. Az egyikben a fv altal kiszamolt erteket 
 
     9 az egyik operandusban kapjuk vissza, a masikban egy tag-template specializacip 
 
    10 eredmenyekent balra adja vissza a cuccot. Nehol referencia van irva ahol nem 
 
    11 kell, ezen ne tessek fonnakadni.
 
    16 trivialis node iterator, csak cimezni lehet vele, pl property vectort
 
    18 node iterator a graf pontjainak bejarasara, NodeIt-e konvertalhato
 
    21 trivialis edge iterator, csak cimezni lehet vele, pl property vectort
 
    23 edge iterator a graf osszes elenek bejarasara
 
    25 edge iterator 1 pont ki eleinek bejarasara, EdgeIt-e konvertalhato
 
    27 edge iterator 1 pont be eleinek bejarasara, EdgeIt-e konvertalhato
 
    29 edge iterator 1 pont be es ki eleinek bejarasara, EdgeIt-e konvertalhato
 
    31 Az iteratorok ures konstruktorai invalid iteratort konstrualnak. 
 
    33 template<typename ValueType> class NodeMap;
 
    34 template<typename ValueType> class EdgeMap;
 
    39 A kovetkezo cuccokbol kell valasztani:
 
    41 NodeIt tail(const EdgeIt) const;
 
    42 NodeIt head(const EdgeIt) const;
 
    44 NodeIt aNode(const OutEdgeIt) const;
 
    45 NodeIt aNode(const InEdgeIt) const;
 
    46 NodeIt aNode(const SymEdgeIt) const;
 
    47 az out, in or sym edge iterator rogzitett pontjara ad 1 NodeIt-t
 
    49 NodeIt bNode(const OutEdgeIt) const;
 
    50 NodeIt bNode(const InEdgeIt) const;
 
    51 NodeIt bNode(const SymEdgeIt) const;
 
    52 az out, in or sym edge iterator nem rogzitett pontjara ad 1 NodeIt-t
 
    54 EachNodeIt first<EachNodeIt>() const;
 
    55 EachEdgeIt first<EachEdgeIt>() const;
 
    56 OutEdgeIt first<OutEdgeIt>(const NodeIt) const; 
 
    57 InEdgeIt first<InEdgeIt>(const NodeIt) const; 
 
    58 SymEdgeIt first<SymEdgeIt>(const NodeIt) const; 
 
    59 EachNodeIt get<EachNodeIt>(const NodeIt) const; ??? konverzio miatt
 
    60 EachEdgeIt get<EachEdgeIt>(const EdgeIt) const; ??? konverzio miatt
 
    61 OutEdgeIt get<OutEdgeIt>(const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    62 InEdgeIt get<InEdgeIt>(const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    63 SymEdgeIt get<SymEdgeIt>(const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    65 A masik lehetoseg pedig:
 
    67 void getTail(NodeIt&, const EdgeIt) const;
 
    68 void getHead(NodeIt&, const EdgeIt) const;
 
    70 void getANode(NodeIt&, const OutEdgeIt) const;
 
    71 void getANode(NodeIt&, const InEdgeIt) const;
 
    72 void getANode(NodeIt&, const SymEdgeIt) const;
 
    74 void getBNode(NodeIt&, const OutEdgeIt) const;
 
    75 void getBNode(NodeIt&, const InEdgeIt) const;
 
    76 void getBNode(NodeIt&, const SymEdgeIt) const;
 
    78 void getFirst(EachNodeIt&) const;
 
    79 void getFirst(EachEdgeIt&) const;
 
    80 void getFirst(OutEdgeIt&, const NodeIt) const;
 
    81 void getFirst(InEdgeIt&, const NodeIt) const;
 
    82 void getFirst(SymEdgeIt&, const NodeIt) const;
 
    83 void get(EachNodeIt&, const NodeIt) const; ??? konverzio miatt
 
    84 void get(EachEdgeIt&, const EdgeIt) const; ??? konverzio miatt
 
    85 void get(OutEdgeIt&, const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    86 void get(InEdgeIt&, const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    87 void get(SymEdgeIt&, const NodeIt, const EdgeIt) const; ??? konverzio miatt
 
    89 Itt er veget az alternativ ize.
 
    91 Pontok azonositasara de meginkabb property vectorokhoz:
 
    93 int id(const NodeIt&) const;
 
    94 int id(const EdgeIt&) const;
 
    99 Pontok es elek hozzaadasanak metodusai:
 
   102 EdgeIt addEdge(const NodeIt, const NodeIt);
 
   104 void deleteNode(const NodeIt);
 
   105 void deleteEdge(const EdgeIt);
 
   107 void setTail(const NodeIt); vagy void setTail(NodeIt); nem tom
 
   108 void setHead(const NodeIt); vagy void setHead(NodeIt); nem tom
 
   110 Hogy konnyebb legyen a progikat tesztelni, nehany stream utasitas:
 
   111 ezek nem a ListGraph metodusai
 
   113 friend std::ostream& operator<<(std::ostream&, const NodeIt&);
 
   114 friend std::ostream& operator<<(std::ostream&, const EdgeIt&);
 
   116 AZ iteratorok leptetesere ket lehetoseg van, az iterator ++ operatora, a 
 
   119 const G.next(const It) const; 
 
   120 It& G.setNext(It&) const; G.goNext(It&) const; G.moveNext(It&) const; mi a jobb szo?
 
   122 Kerdes: A bool valid()-nak ki kell-e jelenteni magarol, hogy const??
 
   126 ezek nem tagfuggvenyek:
 
   127 friend bool operator==(const NodeIt&, const NodeIt&);
 
   128 friend bool operator!=(const NodeIt&, const NodeIt&);
 
   130 EachNodeIt metodusai:
 
   131 ez publikusan szarmazik a NodeIt-bol, tehat a fentiek is.
 
   133 EachNodeIt& operator++();
 
   139 friend bool operator==(const EdgeIt&, const EdgeIt&);
 
   140 friend bool operator!=(const EdgeIt&, const EdgeIt&);
 
   143 EachEdgeIt metodusai:
 
   146 EachEdgeIt& operator++();
 
   151 OutEdgeIt& operator++();
 
   156 InEdgeIt& operator++();
 
   161 SymEdgeIt& operator++();
 
   163 Ami itt kovetkezik az mar nem lenyeg, sot valtozni fog.
 
   165 Node propery array-okrol:
 
   167 template <typename ValueType>
 
   172 NodeMap(const Graph&);
 
   173 NodeMap(const Graph&, const ValueType);
 
   174 void set(Graph::NodeIt, const ValueType);
 
   175 //void put(Graph::NodeIt, const ValueType);
 
   176 ValueType get(Graph::NodeIt) const;
 
   178 Ugyanez edge_property_array-okkal
 
   180 template <typename ValueType>
 
   183 EdgeMap(const Graph&);
 
   184 EdgeMap(const Graph&, const ValueType);
 
   185 void set(Graph::EdgeIt, const ValueType);
 
   186 //void put(Graph::EdgeIt, const ValueType);
 
   187 ValueType get(Graph::EdgeIt) const;