[Lemon-commits] [lemon_svn] alpar: r310 - hugo/trunk/src/work/alpar

Lemon SVN svn at lemon.cs.elte.hu
Mon Nov 6 20:38:39 CET 2006


Author: alpar
Date: Sat Mar 20 17:07:19 2004
New Revision: 310

Modified:
   hugo/trunk/src/work/alpar/smart_graph.h

Log:
bool map problems solved.
(now operator[] gives back 'std::vector<T>::reference' rather that 'T&')


Modified: hugo/trunk/src/work/alpar/smart_graph.h
==============================================================================
--- hugo/trunk/src/work/alpar/smart_graph.h	(original)
+++ hugo/trunk/src/work/alpar/smart_graph.h	Sat Mar 20 17:07:19 2004
@@ -371,12 +371,17 @@
 	if(k.n>=int(container.size())) container.resize(k.n+1);
       }
 
-      void erase(const Node k) { }
+      void erase(const Node) { }
       
       void set(Node n, T a) { container[n.n]=a; }
       //T get(Node n) const { return container[n.n]; }
-      T& operator[](Node n) { return container[n.n]; }
-      const T& operator[](Node n) const { return container[n.n]; }
+      //Hajjaj:
+      //T& operator[](Node n) { return container[n.n]; }
+      typename std::vector<T>::reference
+      operator[](Node n) { return container[n.n]; }
+      //const T& operator[](Node n) const { return container[n.n]; }
+      typename std::vector<T>::const_reference 
+      operator[](Node n) const { return container[n.n]; }
 
       ///\warning There is no safety check at all!
       ///Using operator = between maps attached to different graph may
@@ -458,12 +463,14 @@
       {
 	if(k.n>=int(container.size())) container.resize(k.n+1);
       }
-      void erase(const Edge k) { }
+      void erase(const Edge) { }
       
       void set(Edge n, T a) { container[n.n]=a; }
       //T get(Edge n) const { return container[n.n]; }
-      T& operator[](Edge n) { return container[n.n]; }
-      const T& operator[](Edge n) const { return container[n.n]; }
+      typename std::vector<T>::reference
+      operator[](Edge n) { return container[n.n]; }
+      typename std::vector<T>::const_reference
+      operator[](Edge n) const { return container[n.n]; }
 
       ///\warning There is no safety check at all!
       ///Using operator = between maps attached to different graph may
@@ -604,8 +611,10 @@
       
       void set(Edge n, T a) { container[n.idref()/2]=a; }
       //T get(Edge n) const { return container[n.idref()/2]; }
-      T& operator[](Edge n) { return container[n.idref()/2]; }
-      const T& operator[](Edge n) const { return container[n.idref()/2]; }
+      typename std::vector<T>::reference
+      operator[](Edge n) { return container[n.idref()/2]; }
+      typename std::vector<T>::const_reference
+      operator[](Edge n) const { return container[n.idref()/2]; }
 
       ///\warning There is no safety check at all!
       ///Using operator = between maps attached to different graph may



More information about the Lemon-commits mailing list