\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - Polynomial

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Related Functions
CGAL::Exponent_vector Class Reference
Classes

`#include <CGAL/Exponent_vector.h>`

## Definition

For a given (multivariate) monomial the vector of its exponents is called the exponent vector.

The class `Exponent_vector` is meant to represent such a vector.

A vector is considered as valid, in case it represents a valid monomial. that is, it should not contain negative exponents. We decided to use int as the value type, since negative exponents may appear in intermediate results. The set of exponent vectors with elementwise addition forms an Abelian Group.

Beside the constructors `Exponent_vector` has almost the same interface as an `std::vector<int>`. Moreover the comparison is changed such that the lexicographic order starts the comparison at the last entry. This reflects the fact that the last entry corresponds to the outermost variable of a multivariate polynomial.

Is Model Of:

  `RandomAccessContainer`

  `DefaultConstructible`

  `Assignable`

  `CopyConstructible`

  `EqualityComparable`

  `LessThanComparable`

See Also
  `Polynomial_d`
  `PolynomialTraits_d`

Examples:
  Polynomial/coefficient_access.cpp, and Polynomial/construction.cpp.

## Related Functions
(Note that these are not member functions.)
bool | is_valid (const Exponent_vector &ev)
| Returns true if all entries of exponent vector `ev` are not negative.

## Creation
| Exponent_vector ()
| Default constructor.
| Exponent_vector (const Exponent_vector &ev_)
| The copy constructor.
| Exponent_vector (int e1)
| Creates a vector containing the given element.
| Exponent_vector (int e1, int e2)
| Creates a vector containing the given elements.
| Exponent_vector (int e1, int e2, int e3)
| Creates a vector containing the given elements.
| Exponent_vector (int e1, int e2, int e3, int e4)
| Creates a vector containing the given elements.
template<class InputIterator >
| Exponent_vector (InputIterator begin, InputIterator end)
| Creates a vector with a copy of the given range. More...

## Operations
Exponent_vector | operator+ (const Exponent_vector &ev1)
Exponent_vector | operator- (const Exponent_vector &ev1)
Exponent_vector | operator+ (const Exponent_vector &ev1, const Exponent_vector &ev2)
Exponent_vector | operator- (const Exponent_vector &ev1, const Exponent_vector &ev2)
Exponent_vector | operator+= (const Exponent_vector &ev2)
Exponent_vector | operator-= (const Exponent_vector &ev2)
bool | operator== (const Exponent_vector &ev1, const Exponent_vector &ev2)
bool | operator!= (const Exponent_vector &ev1, const Exponent_vector &ev2)
bool | operator< (const Exponent_vector &ev1, const Exponent_vector &ev2)
| Lexicographic compare, starting with the last variable.

## Constructor & Destructor Documentation

template<class InputIterator >

CGAL::Exponent_vector::Exponent_vector | ( | InputIterator | begin,
|  | InputIterator | end
| ) |  |

Creates a vector with a copy of the given range.

Precondition
  `InputIterator` must allow the value type `int`.

## Member Function Documentation

Exponent_vector CGAL::Exponent_vector::operator+ | ( | const Exponent_vector & | ev1,
|  | const Exponent_vector & | ev2
| ) |  |

Precondition
  ev1.size() == ev2.size().

Exponent_vector CGAL::Exponent_vector::operator+= | ( | const Exponent_vector & | ev2) |  |

Precondition
  `fo`.size() == ev2.size()

Exponent_vector CGAL::Exponent_vector::operator- | ( | const Exponent_vector & | ev1,
|  | const Exponent_vector & | ev2
| ) |  |

Precondition
  ev1.size() == ev2.size()

Exponent_vector CGAL::Exponent_vector::operator-= | ( | const Exponent_vector & | ev2) |  |

Precondition
  `fo`.size() == ev2.size()