exmap cmap;
cmap[_ex1] = _ex0;
- for (const_iterator xi=x.begin(); xi!=x.end(); ++xi) {
+ for (const auto & xi : x) {
ex key = _ex1;
- ex pre_coeff = *xi;
- for (lst::const_iterator li=l.begin(); li!=l.end(); ++li) {
- int cexp = pre_coeff.degree(*li);
- pre_coeff = pre_coeff.coeff(*li, cexp);
- key *= pow(*li, cexp);
+ ex pre_coeff = xi;
+ for (auto & li : l) {
+ int cexp = pre_coeff.degree(li);
+ pre_coeff = pre_coeff.coeff(li, cexp);
+ key *= pow(li, cexp);
}
exmap::iterator ci = cmap.find(key);
if (ci != cmap.end())
}
exvector resv;
- for (exmap::const_iterator mi=cmap.begin(); mi != cmap.end(); ++mi)
- resv.push_back((mi->first)*(mi->second));
+ for (auto & mi : cmap)
+ resv.push_back((mi.first)*(mi.second));
return (new add(resv))->setflag(status_flags::dynallocated);
} else {
struct evalf_map_function : public map_function {
int level;
evalf_map_function(int l) : level(l) {}
- ex operator()(const ex & e) { return evalf(e, level); }
+ ex operator()(const ex & e) override { return evalf(e, level); }
};
/** Evaluate object numerically. */
/** Function object to be applied by basic::evalm(). */
struct evalm_map_function : public map_function {
- ex operator()(const ex & e) { return evalm(e); }
+ ex operator()(const ex & e) override { return evalm(e); }
} map_evalm;
/** Evaluate sums, products and integer powers of matrices. */
/** Function object to be applied by basic::eval_integ(). */
struct eval_integ_map_function : public map_function {
- ex operator()(const ex & e) { return eval_integ(e); }
+ ex operator()(const ex & e) override { return eval_integ(e); }
} map_eval_integ;
/** Evaluate integrals, if result is known. */
// Wildcard matches anything, but check whether we already have found
// a match for that wildcard first (if so, the earlier match must be
// the same expression)
- for (exmap::const_iterator it = repl_lst.begin(); it != repl_lst.end(); ++it) {
- if (it->first.is_equal(pattern))
- return is_equal(ex_to<basic>(it->second));
+ for (auto & it : repl_lst) {
+ if (it.first.is_equal(pattern))
+ return is_equal(ex_to<basic>(it.second));
}
repl_lst[pattern] = *this;
return true;
/** Helper function for subs(). Does not recurse into subexpressions. */
ex basic::subs_one_level(const exmap & m, unsigned options) const
{
- exmap::const_iterator it;
-
if (options & subs_options::no_pattern) {
- ex thisex = *this;
- it = m.find(thisex);
+ auto it = m.find(*this);
if (it != m.end())
return it->second;
- return thisex;
+ return *this;
} else {
- for (it = m.begin(); it != m.end(); ++it) {
+ for (auto & it : m) {
exmap repl_lst;
- if (match(ex_to<basic>(it->first), repl_lst))
- return it->second.subs(repl_lst, options | subs_options::no_pattern);
+ if (match(ex_to<basic>(it.first), repl_lst))
+ return it.second.subs(repl_lst, options | subs_options::no_pattern);
// avoid infinite recursion when re-substituting the wildcards
}
}
struct derivative_map_function : public map_function {
const symbol &s;
derivative_map_function(const symbol &sym) : s(sym) {}
- ex operator()(const ex & e) { return diff(e, s); }
+ ex operator()(const ex & e) override { return diff(e, s); }
};
/** Default implementation of ex::diff(). It maps the operation on the
struct expand_map_function : public map_function {
unsigned options;
expand_map_function(unsigned o) : options(o) {}
- ex operator()(const ex & e) { return e.expand(options); }
+ ex operator()(const ex & e) override { return e.expand(options); }
};
/** Expand expression, i.e. multiply it out and return the result as a new