22 #ifndef var_row_vector_h
23 #define var_row_vector_h
25 #include "var_general_matrix.h"
66 RowVector(
int n, Init ini=INIT,
const AT &a=0) : Matrix<General,Fixed<1>,Var,AT>(n,ini,a) { }
97 template<
class Type,
class Row,
class Col>
98 explicit RowVector(
const Matrix<Type,Row,Col,AT> &A) : Matrix<General,Fixed<1>,Var,AT>(A) {
101 RowVector<Var,AT>& resize() {
102 Matrix<General,Fixed<1>,Var,AT>::resize();
106 RowVector<Var,AT>& resize(
int n, Noinit) {
107 Matrix<General,Fixed<1>,Var,AT>::resize(n,Noinit());
111 RowVector<Var,AT>& resize(
int n, Init ini=INIT,
const AT &a=0) {
112 Matrix<General,Fixed<1>,Var,AT>::resize(n,ini,a);
122 inline RowVector<Var,AT>& operator=(
const RowVector<Var,AT> &x);
125 inline RowVector<Var,AT>& operator=(
const RowVector<Row,AT> &x);
134 inline RowVector<Var,AT>& operator<<(const RowVector<Row,AT> &x);
148 #ifndef FMATVEC_NO_BOUNDS_CHECK
162 #ifndef FMATVEC_NO_BOUNDS_CHECK
178 const AT&
e(
int i)
const {
191 inline RowVector<Var,AT>& init(Noinit,
const AT &a=0) {
return *
this; }
205 int inc()
const {
return 1;};
213 inline operator std::vector<AT>();
231 for(
int i=0; i<N; i++)
244 #ifndef FMATVEC_NO_SIZE_CHECK
245 assert(N == x.
size());
254 template <
class AT>
template<
class Row>
262 #ifndef FMATVEC_NO_SIZE_CHECK
263 assert(N == x.size());
272 template <
class AT>
template<
class Row>
289 for(
int i=0; i<N; i++)
296 std::vector<AT> ret(size());
297 if(size()>0) memcpy(&ret[0], &
operator()(0),
sizeof(AT)*size());
303 if(size()>0) memcpy(&
operator()(0), &v[0],
sizeof(AT)*size());
308 #ifndef FMATVEC_NO_BOUNDS_CHECK
313 for(
int i=0; i<x.size(); i++)
314 x.e(i) = e(I.
start()+i);
319 template <
class AT>
template <
class Row>
320 inline void RowVector<Var,AT>::set(
const Range<Var,Var> &I,
const RowVector<Row,AT> &x) {
321 #ifndef FMATVEC_NO_BOUNDS_CHECK
322 assert(I.end()<size());
323 assert(I.size()==x.size());
326 for(
int i=I.start(), ii=0; i<=I.end(); i++, ii++)
332 template <
class AT>
template <
class Row>
333 inline void RowVector<Var,AT>::deepCopy(
const RowVector<Row,AT> &x) {
334 for(
int i=0; i<N; i++)
const AT & operator()(int i) const
Element operator.
Definition: var_row_vector.h:160
RowVector(const char *str)
String Constructor.
Definition: var_row_vector.h:80
This is the basic matrix class for arbitrary matrices.
Definition: matrix.h:56
RowVector()
Standard constructor.
Definition: var_row_vector.h:59
This is a vector class of general shape in dense storage format.
Definition: var_vector.h:39
AT & operator()(int i)
Element operator.
Definition: var_row_vector.h:146
RowVector(const RowVector< Var, AT > &x)
Copy Constructor.
Definition: var_row_vector.h:90
int size() const
Size.
Definition: var_row_vector.h:197
Basic shape class for matrices.
Definition: types.h:100
const AT & e(int i) const
Element operator.
Definition: var_row_vector.h:178
int end() const
Last element.
Definition: range.h:95
int inc() const
Increment.
Definition: var_row_vector.h:205
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