\begin{ccRefClass}{Linear_program} \ccInclude{CGAL/QP_models.h} \ccDefinition An object of class \ccRefName\ describes a linear program of the form %% \begin{eqnarray*} \mbox{(QP)}& \mbox{minimize} & c^{T}x+c_0 \\ &\mbox{subject to} & Ax\qprel b, \\ & & l \leq x \leq u \end{eqnarray*} %% in $n$ real variables $x=(x_0,\ldots,x_{n-1})$. Here, \begin{itemize} \item $A$ is an $m\times n$ matrix (the constraint matrix), \item $b$ is an $m$-dimensional vector (the right-hand side), \item $\qprel$ is an $m$-dimensional vector of relations from $\{\leq, =, \geq\}$, \item $l$ is an $n$-dimensional vector of lower bounds for $x$, \item $u$ is an $n$-dimensional vector of upper bounds for $x$, \item $c$ is an $n$-dimensional vector (the linear objective function), and \item $c_0$ is a constant. \end{itemize} This class copies the program data from given iterator ranges; this is useful if the iterators that you have are not random-access. The time taken to copy the data is $\Theta(nm+n^2)$, though, even if the program description is very sparse. Usually, you only need to wrap existing (random-access) iterators, and then you may use the classes \ccc{Linear_program_from_iterators} and \ccc{Linear_program_from_pointers}). \ccIsModel \ccc{LinearProgramInterface} \ccCreation \ccIndexClassCreation \ccCreationVariable{lp} The following constructor is a template, so you can provide input iterators of any types. \ccConstructor{Linear_program_from_iterators(int n, int m, const A_iterator& a, const B_iterator& b, const R_iterator& r, const FL_iterator& fl, const L_iterator& l, const FU_iterator& fu, const U_iterator& u, const C_iterator& c, const std::iterator_traitsvalue_type& c0 = 0 )}{constructs \ccVar\ from given input iterators and the constant \ccc{c0}.} \ccSeeAlso \ccc{Linear_program_from_iterators}\\ \ccc{Linear_program_from_pointers} \end{ccRefClass}