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>();
229 for(
int i=0; i<N; i++)
242 #ifndef FMATVEC_NO_SIZE_CHECK
243 assert(N == x.
size());
252 template <
class AT>
template<
class Row>
260 #ifndef FMATVEC_NO_SIZE_CHECK
261 assert(N == x.size());
270 template <
class AT>
template<
class Row>
287 for(
int i=0; i<N; i++)
294 std::vector<AT> ret(size());
295 if(size()>0) memcpy(&ret[0], &
operator()(0),
sizeof(AT)*size());
301 if(size()>0) memcpy(&
operator()(0), &v[0],
sizeof(AT)*size());
304 template <
class AT>
template <
class Row>
306 #ifndef FMATVEC_NO_BOUNDS_CHECK
307 assert(I.
end()<size());
308 assert(I.
size()==x.size());
311 for(
int i=I.
start(), ii=0; i<=I.
end(); i++, ii++)
317 template <
class AT>
template <
class Row>
318 inline void RowVector<Var,AT>::deepCopy(
const RowVector<Row,AT> &x) {
319 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: range.h:101
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