| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
4.1.1 Note: Expressions and STL containers
GiNaC expressions (ex objects) have value semantics (they can be
assigned, reassigned and copied like integral types) but the operator
< doesn't provide a well-defined ordering on them. In STL-speak,
expressions are ‘Assignable’ but not ‘LessThanComparable’.
This implies that in order to use expressions in sorted containers such as
std::map<> and std::set<> you have to supply a suitable
comparison predicate. GiNaC provides such a predicate, called
ex_is_less. For example, a set of expressions should be defined
as std::set<ex, ex_is_less>.
Unsorted containers such as std::vector<> and std::list<>
don't pose a problem. A std::vector<ex> works as expected.
See section Getting information about expressions, for more about comparing and ordering expressions.
