25 #include "var_general_matrix.h"
39 template <
class AT>
class Vector<
Var,AT> :
public Matrix<General,Var,Fixed<1>,AT> {
65 Vector(
int m, Init ini=INIT,
const AT &a=0) : Matrix<General,Var,Fixed<1>,AT>(m,ini,a) { }
96 template<
class Type,
class Row,
class Col>
97 explicit Vector(
const Matrix<Type,Row,Col,AT> &A) : Matrix<General,Var,Fixed<1>,AT>(A) {
100 Vector<Var,AT>& resize() {
101 Matrix<General,Var,Fixed<1>,AT>::resize();
105 Vector<Var,AT>& resize(
int m, Noinit) {
106 Matrix<General,Var,Fixed<1>,AT>::resize(m,Noinit());
110 Vector<Var,AT>& resize(
int m, Init ini=INIT,
const AT &a=0) {
111 Matrix<General,Var,Fixed<1>,AT>::resize(m,ini,a);
121 inline Vector<Var,AT>& operator=(
const Vector<Var,AT> &x);
124 inline Vector<Var,AT>& operator=(
const Vector<Row,AT> &x);
133 inline Vector<Var,AT>& operator<<(const Vector<Row,AT> &x);
147 #ifndef FMATVEC_NO_BOUNDS_CHECK
161 #ifndef FMATVEC_NO_BOUNDS_CHECK
177 const AT&
e(
int i)
const {
190 inline Vector<Var,AT>& init(Noinit,
const AT& a=0) {
return *
this; }
204 int inc()
const {
return 1;};
212 inline operator std::vector<AT>();
218 inline Vector(std::vector<AT> v);
230 for(
int i=0; i<M; i++)
243 #ifndef FMATVEC_NO_SIZE_CHECK
244 assert(M == x.
size());
253 template <
class AT>
template<
class Row>
261 #ifndef FMATVEC_NO_SIZE_CHECK
262 assert(M == x.size());
271 template <
class AT>
template<
class Row>
288 for(
int i=0; i<M; i++)
295 std::vector<AT> ret(size());
296 if(size()>0) memcpy(&ret[0], &
operator()(0),
sizeof(AT)*size());
302 if(size()>0) memcpy(&
operator()(0), &v[0],
sizeof(AT)*size());
307 #ifndef FMATVEC_NO_BOUNDS_CHECK
312 for(
int i=0; i<x.size(); i++)
313 x.e(i) = e(I.
start()+i);
318 template <
class AT>
template <
class Row>
319 inline void Vector<Var,AT>::set(
const Range<Var,Var> &I,
const Vector<Row,AT> &x) {
320 #ifndef FMATVEC_NO_BOUNDS_CHECK
321 assert(I.end()<size());
322 assert(I.size()==x.size());
325 for(
int i=I.start(), ii=0; i<=I.end(); i++, ii++)
331 template <
class AT>
template <
class Row>
332 inline void Vector<Var,AT>::deepCopy(
const Vector<Row,AT> &x) {
333 for(
int i=0; i<M; i++)
Vector()
Standard constructor.
Definition: var_vector.h:59
This is the basic matrix class for arbitrary matrices.
Definition: matrix.h:56
This is a vector class of general shape in dense storage format.
Definition: var_vector.h:39
Vector(const char *str)
String Constructor.
Definition: var_vector.h:79
const AT & operator()(int i) const
Element operator.
Definition: var_vector.h:159
int inc() const
Increment.
Definition: var_vector.h:204
const AT & e(int i) const
Element operator.
Definition: var_vector.h:177
Basic shape class for matrices.
Definition: types.h:100
int size() const
Size.
Definition: var_vector.h:196
Vector(const Vector< Var, AT > &x)
Copy Constructor.
Definition: var_vector.h:89
int end() const
Last element.
Definition: range.h:95
AT & operator()(int i)
Element operator.
Definition: var_vector.h:145
This is an index class for creating submatrices.
Definition: range.h:44
This is a vector class of general shape in dense storage format.
Definition: var_row_vector.h:39
int start() const
First element.
Definition: range.h:89