STK++ 0.9.13
STK_CArray.h
Go to the documentation of this file.
1/*--------------------------------------------------------------------*/
2/* Copyright (C) 2004-2016 Serge Iovleff, Université Lille 1, Inria
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation; either version 2 of the
7 License, or (at your option) any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with this program; if not, write to the
16 Free Software Foundation, Inc.,
17 59 Temple Place,
18 Suite 330,
19 Boston, MA 02111-1307
20 USA
21
22 Contact : S..._Dot_I..._At_stkpp_Dot_org (see copyright for ...)
23 */
24
25/*
26 * Project: stkpp::Arrays
27 * created on: 25 nov. 2011
28 * Author: iovleff, S..._Dot_I..._At_stkpp_Dot_org (see copyright for ...)
29 **/
30
35#ifndef STK_CARRAY_H
36#define STK_CARRAY_H
37
38#include "STK_ICArray.h"
39
40namespace STK
41{
42// forward declarations
43template< typename Type, int SizeRows_ = UnknownSize, int SizeCols_ = UnknownSize, bool Orient_ = Arrays::by_col_> class CArray;
44template< typename Type, int Size_, bool Orient_> class CArraySquare;
45template< typename Type, int SizeCols_, bool Orient_> class CArrayPoint;
46template< typename Type, int SizeRows_, bool Orient_> class CArrayVector;
47template< typename Type, bool Orient_> class CArrayNumber;
48
49// useful typedef
71
93
94namespace hidden
95{
99template<typename Type_, int SizeRows_, int SizeCols_, bool Orient_>
101{
104
105 // The CAllocator have to have the same structure than the CArray
107
108 typedef Type_ Type;
109 typedef typename RemoveConst<Type>::Type const& TypeConst;
110
111 enum
112 {
113 structure_ = Arrays::array2D_,
114 orient_ = Orient_,
115 sizeRows_ = SizeRows_,
116 sizeCols_ = SizeCols_,
117 storage_ = Arrays::dense_
118 };
119};
120
121
122} // namespace hidden
123
128template <typename Type_, int SizeRows_, int SizeCols_, bool Orient_>
129class CArray: public ICArray < CArray<Type_, SizeRows_, SizeCols_, Orient_> >
130{
131 public:
134
139
140 enum
141 {
147 };
148
150 CArray(): Base() {}
154 CArray( int sizeRows, int sizeCols): Base(sizeRows, sizeCols) {}
158 CArray( Range rows, Range cols): Base(rows.size(), cols.size())
159 { this->shift(rows.begin(), cols.begin());}
164 CArray( int sizeRows, int sizeCols, Type const& v): Base(sizeRows, sizeCols, v) {}
169 CArray( Range rows, Range cols, Type const& v): Base(rows.size(), cols.size(), v)
170 { this->shift(rows.begin(), cols.begin());}
175 CArray( CArray const& T, bool ref=false): Base(T, ref) {}
180 template<class OtherArray>
181 CArray( ICArray<OtherArray> const& T, Range const& I, Range const& J)
182 : Base(T.allocator(), I, J) {}
187 CArray( Type* const& q, int sizeRows, int sizeCols): Base(q, sizeRows, sizeCols) {}
191 template<class OtherAllocator>
196 template<class OtherDerived>
197 CArray( ExprBase<OtherDerived> const& T): Base(T.sizeRows(), T.sizeCols()) { LowBase::operator=(T);}
207 template<class Rhs>
208 CArray& operator=(ExprBase<Rhs> const& rhs) { return LowBase::assign(rhs.asDerived());}
212 CArray& operator=(CArray const& rhs) { return LowBase::assign(rhs);}
213};
214
220template <typename Type, int SizeRows_, int SizeCols_, bool Orient_>
226
227
228} // namespace STK
229
230
231#endif /* STK_CARRAY_H */
Interface base class for the CArray, this is an internal header file, included by other Containers li...
CArray< Type_, SizeRows_, SizeCols_, Orient_ > & operator=(Type const &value)
CArray< Type_, SizeRows_, SizeCols_, Orient_ > & setValue(TypeConst value)
set a value to this container.
CArray< Type_, SizeRows_, SizeCols_, Orient_ > & assign(ExprBase< Rhs > const &rhs)
A CArray is a two dimensional array with a continuous storage like a C-array.
Definition STK_CArray.h:130
CArray()
Default constructor.
Definition STK_CArray.h:150
CArray(ICArray< OtherArray > const &T, Range const &I, Range const &J)
Copy constructor by reference, ref_=1.
Definition STK_CArray.h:181
hidden::Traits< CArray< Type_, SizeRows_, SizeCols_, Orient_ > >::Type Type
Definition STK_CArray.h:137
CArray(ITContainer2D< OtherAllocator > const &allocator)
constructor by reference.
Definition STK_CArray.h:192
ICArray< CArray< Type_, SizeRows_, SizeCols_, Orient_ > > Base
Definition STK_CArray.h:132
CArray & operator=(CArray const &rhs)
operator = : overwrite the CArray with the Right hand side rhs.
Definition STK_CArray.h:212
hidden::Traits< CArray< Type_, SizeRows_, SizeCols_, Orient_ > >::Row Row
Definition STK_CArray.h:135
CArray(Range rows, Range cols, Type const &v)
constructor with specified ranges, initialization with a constant.
Definition STK_CArray.h:169
CArray(CArray const &T, bool ref=false)
Copy constructor.
Definition STK_CArray.h:175
hidden::Traits< CArray< Type_, SizeRows_, SizeCols_, Orient_ > >::Col Col
Definition STK_CArray.h:136
hidden::Traits< CArray< Type_, SizeRows_, SizeCols_, Orient_ > >::TypeConst TypeConst
Definition STK_CArray.h:138
CArray(Range rows, Range cols)
constructor with specified ranges.
Definition STK_CArray.h:158
CArray & operator=(ExprBase< Rhs > const &rhs)
operator = : overwrite this with the Right hand side rhs.
Definition STK_CArray.h:208
CArray(ExprBase< OtherDerived > const &T)
Copy constructor using an expression.
Definition STK_CArray.h:197
CArray & operator=(Type const &v)
operator= : set the container to a constant value.
Definition STK_CArray.h:203
~CArray()
destructor.
Definition STK_CArray.h:199
CArray(int sizeRows, int sizeCols, Type const &v)
constructor with specified size, initialization with a constant.
Definition STK_CArray.h:164
CArray(Type *const &q, int sizeRows, int sizeCols)
wrapper constructor for 0 based C-Array.
Definition STK_CArray.h:187
CArray(int sizeRows, int sizeCols)
constructor with specified dimension.
Definition STK_CArray.h:154
ArrayBase< CArray< Type_, SizeRows_, SizeCols_, Orient_ > > LowBase
Definition STK_CArray.h:133
CArray< Type_, SizeRows_, SizeCols_, Orient_ > & shift(int beginRows, int beginCols)
shift the Array.
Allocator const & allocator() const
Get a constant reference on the main allocator.
The MultidimRegression class allows to regress a multidimensional output variable among a multivariat...
int begin() const
get the first index of the TRange.
Definition STK_Range.h:93
Index sub-vector region: Specialization when the size is unknown.
Definition STK_Range.h:265
ostream & out2D(ostream &os, ITContainer< Array > const &V)
Method for displaying any two dimensional Array or Expression.
Definition STK_Display.h:52
ostream & operator<<(ostream &s, const CAllocator< Type, SizeRows_, SizeCols_, Orient_ > &V)
output stream for CAllocator.
Definition STK_CArray.h:221
@ dense_
dense matrix/vector/array/expression
@ array2D_
general matrix/array/expression
std::basic_ostream< Char > ostream
ostream for Char
Definition STK_Stream.h:57
The namespace STK is the main domain space of the Statistical ToolKit project.
CArray< int, UnknownSize, 2, Arrays::by_col_ > CArrayX2i
Definition STK_CArray.h:65
CArray< double, 2, 2, Arrays::by_col_ > CArray22d
Definition STK_CArray.h:62
CArray< Real, 3, 3, Arrays::by_col_ > CArray33
Definition STK_CArray.h:56
CArray< Real, 2, 2, Arrays::by_row_ > CArrayByRow22
Definition STK_CArray.h:77
CArray< Real, UnknownSize, UnknownSize, Arrays::by_col_ > CArrayXX
Definition STK_CArray.h:50
CArray< double, 3, UnknownSize, Arrays::by_col_ > CArray3Xd
Definition STK_CArray.h:61
CArray< int, 2, 2, Arrays::by_col_ > CArray22i
Definition STK_CArray.h:69
CArray< double, UnknownSize, 2, Arrays::by_row_ > CArrayByRowX2d
Definition STK_CArray.h:80
CArray< double, UnknownSize, UnknownSize, Arrays::by_col_ > CArrayXXd
Definition STK_CArray.h:57
CArray< Real, 3, 3, Arrays::by_row_ > CArrayByRow33
Definition STK_CArray.h:78
CArray< Real, UnknownSize, 3, Arrays::by_col_ > CArrayX3
Definition STK_CArray.h:52
CArray< Real, 2, 2, Arrays::by_col_ > CArray22
Definition STK_CArray.h:55
CArray< double, UnknownSize, UnknownSize, Arrays::by_row_ > CArrayByRowXXd
Definition STK_CArray.h:79
CArray< double, 3, UnknownSize, Arrays::by_row_ > CArrayByRow3Xd
Definition STK_CArray.h:83
CArray< Real, 3, UnknownSize, Arrays::by_col_ > CArray3X
Definition STK_CArray.h:54
CArray< int, UnknownSize, UnknownSize, Arrays::by_row_ > CArrayByRowXXi
Definition STK_CArray.h:86
CArray< double, UnknownSize, 3, Arrays::by_row_ > CArrayByRowX3d
Definition STK_CArray.h:81
CArray< Real, UnknownSize, UnknownSize, Arrays::by_row_ > CArrayByRowXX
Definition STK_CArray.h:72
CArray< Real, 2, UnknownSize, Arrays::by_row_ > CArrayByRow2X
Definition STK_CArray.h:75
CArray< double, 3, 3, Arrays::by_col_ > CArray33d
Definition STK_CArray.h:63
CArray< double, 3, 3, Arrays::by_row_ > CArrayByRow33d
Definition STK_CArray.h:85
CArray< double, 2, UnknownSize, Arrays::by_row_ > CArrayByRow2Xd
Definition STK_CArray.h:82
CArray< Real, UnknownSize, 3, Arrays::by_row_ > CArrayByRowX3
Definition STK_CArray.h:74
CArray< int, 3, 3, Arrays::by_col_ > CArray33i
Definition STK_CArray.h:70
CArray< double, UnknownSize, 3, Arrays::by_col_ > CArrayX3d
Definition STK_CArray.h:59
CArray< double, UnknownSize, 2, Arrays::by_col_ > CArrayX2d
Definition STK_CArray.h:58
CArray< int, 3, UnknownSize, Arrays::by_col_ > CArray3Xi
Definition STK_CArray.h:68
CArray< double, 2, UnknownSize, Arrays::by_col_ > CArray2Xd
Definition STK_CArray.h:60
CArray< int, 2, 2, Arrays::by_row_ > CArrayByRow22i
Definition STK_CArray.h:91
CArray< Real, UnknownSize, 2, Arrays::by_row_ > CArrayByRowX2
Definition STK_CArray.h:73
CArray< int, UnknownSize, 2, Arrays::by_row_ > CArrayByRowX2i
Definition STK_CArray.h:87
CArray< int, UnknownSize, 3, Arrays::by_row_ > CArrayByRowX3i
Definition STK_CArray.h:88
CArray< int, UnknownSize, 3, Arrays::by_col_ > CArrayX3i
Definition STK_CArray.h:66
CArray< int, 2, UnknownSize, Arrays::by_row_ > CArrayByRow2Xi
Definition STK_CArray.h:89
CArray< int, UnknownSize, UnknownSize, Arrays::by_col_ > CArrayXXi
Definition STK_CArray.h:64
CArray< int, 3, 3, Arrays::by_row_ > CArrayByRow33i
Definition STK_CArray.h:92
CArray< int, 3, UnknownSize, Arrays::by_row_ > CArrayByRow3Xi
Definition STK_CArray.h:90
CArray< Real, 2, UnknownSize, Arrays::by_col_ > CArray2X
Definition STK_CArray.h:53
CArray< double, 2, 2, Arrays::by_row_ > CArrayByRow22d
Definition STK_CArray.h:84
CArray< Real, UnknownSize, 2, Arrays::by_col_ > CArrayX2
Definition STK_CArray.h:51
CArray< int, 2, UnknownSize, Arrays::by_col_ > CArray2Xi
Definition STK_CArray.h:67
CArray< Real, 3, UnknownSize, Arrays::by_row_ > CArrayByRow3X
Definition STK_CArray.h:76
CAllocator< Type_, SizeRows_, SizeCols_, Orient_ > Allocator
Definition STK_CArray.h:106