COIN-OR::LEMON - Graph Library

Ignore:
Timestamp:
01/27/05 18:44:04 (20 years ago)
Author:
marci
Branch:
default
Phase:
public
Convert:
svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@1498
Message:

-=, - operators in expressions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/work/marci/lp/expression.h

    r1097 r1099  
    2020  template <typename _Col, typename _Value>
    2121  class Expr {
    22   protected:
     22//  protected:
     23  public:
    2324    typedef
    2425    typename std::map<_Col, _Value> Data;
    2526    Data data;
    2627  public:
     28    void simplify() {
     29      for (typename Data::iterator i=data.begin();
     30           i!=data.end(); ++i) {
     31        if ((*i).second==0) data.erase(i);
     32      }
     33    }
    2734    Expr() { }
    2835    Expr(_Col _col) {
     
    3441        (*i).second *= _value;
    3542      }
     43      simplify();
    3644      return *this;
    3745    }
     
    4654        }
    4755      }
     56      simplify();
     57      return *this;
     58    }
     59    Expr& operator-=(const Expr<_Col, _Value>& expr) {
     60      for (typename Data::const_iterator j=expr.data.begin();
     61           j!=expr.data.end(); ++j) {
     62        typename Data::iterator i=data.find((*j).first);
     63        if (i==data.end()) {
     64          data.insert(std::make_pair((*j).first, -(*j).second));
     65        } else {
     66          (*i).second+=-(*j).second;
     67        }
     68      }
     69      simplify();
    4870      return *this;
    4971    }
     
    5779    Expr<_Col, _Value> tmp(_col);
    5880    tmp*=_value;
     81    tmp.simplify();
    5982    return tmp;
    6083  }
     
    6588    Expr<_Col, _Value> tmp(expr);
    6689    tmp*=_value;
     90    tmp.simplify();
    6791    return tmp;
    6892  }
     
    7397    Expr<_Col, _Value> tmp(expr1);
    7498    tmp+=expr2;
     99    tmp.simplify();
     100    return tmp;
     101  }
     102
     103  template <typename _Col, typename _Value>
     104  Expr<_Col, _Value> operator-(const Expr<_Col, _Value>& expr1,
     105                               const Expr<_Col, _Value>& expr2) {
     106    Expr<_Col, _Value> tmp(expr1);
     107    tmp-=expr2;
     108    tmp.simplify();
    75109    return tmp;
    76110  }
Note: See TracChangeset for help on using the changeset viewer.