75 #ifndef SLIP_GENERICMULTICOMPONENT2D_HPP
76 #define SLIP_GENERICMULTICOMPONENT2D_HPP
100 #include <boost/serialization/access.hpp>
101 #include <boost/serialization/split_member.hpp>
102 #include <boost/serialization/version.hpp>
107 template<
class Block>
108 class stride_iterator;
110 template<
class Block>
111 class iterator2d_box;
114 class const_iterator2d_box;
117 class const_iterator2d_range;
119 template <
class Block>
122 template <
class Block>
125 template <
class Block>
128 template <
typename Block>
131 template <
typename Block>
134 template <
typename Block>
135 std::ostream& operator<<(std::ostream & out, const slip::GenericMultiComponent2d<Block>& a);
137 template<
typename Block>
141 template<
typename Block>
190 template <
typename Block>
283 static const std::size_t
DIM = 2;
322 typename Block::const_pointer val);
345 template<
typename InputIterator>
367 template<
typename InputIterator>
370 std::vector<InputIterator> first_iterators_list,
375 this->
fill(first_iterators_list,last);
401 const Block& val = Block());
2023 const std::size_t row);
2034 const std::size_t row)
const;
2045 const std::size_t row);
2056 const std::size_t row)
const;
2068 const std::size_t row);
2079 const std::size_t row)
const;
2090 const std::size_t row);
2101 const std::size_t row)
const;
2113 const std::size_t col);
2124 const std::size_t col)
const;
2135 const std::size_t col);
2146 const std::size_t col)
const;
2159 const std::size_t col);
2170 const std::size_t col)
const;
2181 const std::size_t col);
2192 const std::size_t col)
const;
3009 friend std::ostream& operator<< <>(std::ostream & out,
const self& a);
3041 self&
operator=(
const typename Block::value_type& val);
3052 std::fill_n(this->
begin(),
size(),value);
3061 void fill(
const typename Block::pointer value)
3085 template<
typename InputIterator>
3100 template<
typename InputIterator>
3101 void fill(std::vector<InputIterator> first_iterators_list,
3104 std::vector<typename slip::kstride_iterator<typename Block::pointer,Block::SIZE> > iterators_list(Block::SIZE);
3106 for(std::size_t component = 0; component < Block::SIZE; ++component)
3112 while(first_iterators_list[0] != last)
3114 for(std::size_t component = 0; component < Block::SIZE; ++component)
3116 *iterators_list[component]++ = *first_iterators_list[component]++;
3119 iterators_list.clear();
3132 template<
typename InputIterator>
3134 InputIterator first,
3420 friend class boost::serialization::access;
3421 template<
class Archive>
3422 void save(Archive & ar,
const unsigned int version)
const
3426 template<
class Archive>
3427 void load(Archive & ar,
const unsigned int version)
3431 BOOST_SERIALIZATION_SPLIT_MEMBER();
3441 template<
typename Block>
3444 matrix_(new slip::
Matrix<Block>())
3447 template<
typename Block>
3451 matrix_(new slip::
Matrix<Block>(height,width))
3454 template<
typename Block>
3458 typename Block::const_pointer val):
3459 matrix_(new slip::
Matrix<Block>(height,width))
3468 (*it)[component] = *val++;
3473 template<
typename Block>
3478 matrix_(new slip::
Matrix<Block>(height,width,val))
3481 template<
typename Block>
3486 matrix_(new slip::
Matrix<Block>(height,width,val))
3489 template<
typename Block>
3492 matrix_(new slip::
Matrix<Block>((*rhs.matrix_)))
3495 template<
typename Block>
3502 template<
typename Block>
3508 *matrix_ = *(rhs.matrix_);
3513 template<
typename Block>
3517 std::fill_n(matrix_->begin(),matrix_->size(),val);
3521 template<
typename Block>
3525 std::fill_n(matrix_->begin(),matrix_->size(),val);
3529 template<
typename Block>
3535 matrix_->resize(height,width,val);
3539 template<
typename Block>
3543 return matrix_->begin();
3546 template<
typename Block>
3550 return matrix_->end();
3553 template<
typename Block>
3561 template<
typename Block>
3570 template<
typename Block>
3577 template<
typename Block>
3584 template<
typename Block>
3591 template<
typename Block>
3598 template<
typename Block>
3603 return matrix_->row_begin(row);
3606 template<
typename Block>
3608 typename GenericMultiComponent2d<Block>::row_iterator
3611 return matrix_->row_end(row);
3614 template<
typename Block>
3616 typename GenericMultiComponent2d<Block>::col_iterator
3619 return matrix_->col_begin(col);
3623 template<
typename Block>
3625 typename GenericMultiComponent2d<Block>::col_iterator
3628 return matrix_->col_end(col);
3632 template<
typename Block>
3634 typename GenericMultiComponent2d<Block>::const_row_iterator
3638 return tp->row_begin(row);
3641 template<
typename Block>
3643 typename GenericMultiComponent2d<Block>::const_row_iterator
3647 return tp->row_end(row);
3650 template<
typename Block>
3655 return tp->col_begin(col);
3658 template<
typename Block>
3663 return tp->col_end(col);
3667 template<
typename Block>
3669 typename GenericMultiComponent2d<Block>::reverse_row_iterator
3672 return matrix_->row_rbegin(row);
3675 template<
typename Block>
3677 typename GenericMultiComponent2d<Block>::const_reverse_row_iterator
3681 return tp->row_rbegin(row);
3684 template<
typename Block>
3688 return matrix_->row_rend(row);
3691 template<
typename Block>
3693 typename GenericMultiComponent2d<Block>::const_reverse_row_iterator
3697 return tp->row_rend(row);
3701 template<
typename Block>
3705 return matrix_->col_rbegin(col);
3708 template<
typename Block>
3713 return tp->col_rbegin(col);
3716 template<
typename Block>
3718 typename GenericMultiComponent2d<Block>::reverse_col_iterator
3721 return matrix_->col_rend(col);
3724 template<
typename Block>
3726 typename GenericMultiComponent2d<Block>::const_reverse_col_iterator
3730 return tp->col_rend(col);
3733 template<
typename Block>
3735 typename GenericMultiComponent2d<Block>::row_range_iterator
3738 return matrix_->row_begin(row,range);
3741 template<
typename Block>
3743 typename GenericMultiComponent2d<Block>::const_row_range_iterator
3748 return tp->row_begin(row,range);
3751 template<
typename Block>
3753 typename GenericMultiComponent2d<Block>::col_range_iterator
3757 return matrix_->col_begin(col,range);
3760 template<
typename Block>
3762 typename GenericMultiComponent2d<Block>::const_col_range_iterator
3767 return tp->col_begin(col,range);
3771 template<
typename Block>
3773 typename GenericMultiComponent2d<Block>::row_range_iterator
3777 return matrix_->row_end(row,range);
3780 template<
typename Block>
3782 typename GenericMultiComponent2d<Block>::const_row_range_iterator
3787 return tp->row_end(row,range);
3790 template<
typename Block>
3792 typename GenericMultiComponent2d<Block>::col_range_iterator
3796 return matrix_->col_end(col,range);
3799 template<
typename Block>
3801 typename GenericMultiComponent2d<Block>::const_col_range_iterator
3806 return tp->col_end(col,range);
3809 template<
typename Block>
3811 typename GenericMultiComponent2d<Block>::reverse_row_range_iterator
3818 template<
typename Block>
3820 typename GenericMultiComponent2d<Block>::const_reverse_row_range_iterator
3828 template<
typename Block>
3830 typename GenericMultiComponent2d<Block>::reverse_col_range_iterator
3837 template<
typename Block>
3839 typename GenericMultiComponent2d<Block>::const_reverse_col_range_iterator
3846 template<
typename Block>
3848 typename GenericMultiComponent2d<Block>::reverse_row_range_iterator
3855 template<
typename Block>
3857 typename GenericMultiComponent2d<Block>::const_reverse_row_range_iterator
3865 template<
typename Block>
3867 typename GenericMultiComponent2d<Block>::reverse_col_range_iterator
3874 template<
typename Block>
3876 typename GenericMultiComponent2d<Block>::const_reverse_col_range_iterator
3883 template<
typename Block>
3887 return matrix_->upper_left();
3890 template<
typename Block>
3899 template<
typename Block>
3903 return matrix_->bottom_right();
3906 template<
typename Block>
3914 template<
typename Block>
3918 return matrix_->upper_left(box);
3922 template<
typename Block>
3930 template<
typename Block>
3934 return matrix_->bottom_right(box);
3937 template<
typename Block>
3946 template<
typename Block>
3952 return matrix_->upper_left(row_range,col_range);
3955 template<
typename Block>
3965 template<
typename Block>
3971 return matrix_->bottom_right(row_range,col_range);
3974 template<
typename Block>
3984 template<
typename Block>
3989 return matrix_->upper_left(range);
3992 template<
typename Block>
4001 template<
typename Block>
4006 return matrix_->bottom_right(range);
4009 template<
typename Block>
4019 template<
typename Block>
4024 return matrix_->rbottom_right();
4027 template<
typename Block>
4036 template<
typename Block>
4041 return matrix_->rupper_left();
4044 template<
typename Block>
4053 template<
typename Block>
4058 return matrix_->rbottom_right(box);
4061 template<
typename Block>
4070 template<
typename Block>
4075 return matrix_->rupper_left(box);
4078 template<
typename Block>
4087 template<
typename Block>
4093 return matrix_->rupper_left(row_range,col_range);
4096 template<
typename Block>
4106 template<
typename Block>
4112 return matrix_->rbottom_right(row_range,col_range);
4115 template<
typename Block>
4125 template<
typename Block>
4130 return this->rupper_left(range,range);
4133 template<
typename Block>
4142 template<
typename Block>
4147 return this->rbottom_right(range,range);
4150 template<
typename Block>
4163 template<
typename Block>
4171 template<
typename Block>
4173 typename GenericMultiComponent2d<Block>::component_iterator
4179 template<
typename Block>
4181 typename GenericMultiComponent2d<Block>::const_component_iterator
4187 template<
typename Block>
4189 typename GenericMultiComponent2d<Block>::const_component_iterator
4196 template<
typename Block>
4198 typename GenericMultiComponent2d<Block>::reverse_component_iterator
4204 template<
typename Block>
4206 typename GenericMultiComponent2d<Block>::reverse_component_iterator
4212 template<
typename Block>
4214 typename GenericMultiComponent2d<Block>::const_reverse_component_iterator
4220 template<
typename Block>
4222 typename GenericMultiComponent2d<Block>::const_reverse_component_iterator
4229 template<
typename Block>
4231 typename GenericMultiComponent2d<Block>::component_row_iterator
4233 const typename GenericMultiComponent2d<Block>::size_type row)
4238 template<
typename Block>
4240 typename GenericMultiComponent2d<Block>::component_row_iterator
4242 const typename GenericMultiComponent2d<Block>::size_type row)
4247 template<
typename Block>
4249 typename GenericMultiComponent2d<Block>::const_component_row_iterator
4251 const typename GenericMultiComponent2d<Block>::size_type row)
const
4256 template<
typename Block>
4258 typename GenericMultiComponent2d<Block>::const_component_row_iterator
4260 const typename GenericMultiComponent2d<Block>::size_type row)
const
4265 template<
typename Block>
4267 typename GenericMultiComponent2d<Block>::reverse_component_row_iterator
4269 const typename GenericMultiComponent2d<Block>::size_type row)
4274 template<
typename Block>
4276 typename GenericMultiComponent2d<Block>::reverse_component_row_iterator
4278 const typename GenericMultiComponent2d<Block>::size_type row)
4283 template<
typename Block>
4285 typename GenericMultiComponent2d<Block>::const_reverse_component_row_iterator
4287 const typename GenericMultiComponent2d<Block>::size_type row)
const
4292 template<
typename Block>
4294 typename GenericMultiComponent2d<Block>::const_reverse_component_row_iterator
4296 const typename GenericMultiComponent2d<Block>::size_type row)
const
4301 template<
typename Block>
4305 const typename GenericMultiComponent2d<Block>::size_type col)
4312 template<
typename Block>
4316 const typename GenericMultiComponent2d<Block>::size_type col)
const
4322 template<
typename Block>
4326 const typename GenericMultiComponent2d<Block>::size_type col)
4332 template<
typename Block>
4336 const typename GenericMultiComponent2d<Block>::size_type col)
const
4342 template<
typename Block>
4344 typename GenericMultiComponent2d<Block>::reverse_component_col_iterator
4346 const typename GenericMultiComponent2d<Block>::size_type col)
4351 template<
typename Block>
4353 typename GenericMultiComponent2d<Block>::reverse_component_col_iterator
4355 const typename GenericMultiComponent2d<Block>::size_type col)
4360 template<
typename Block>
4362 typename GenericMultiComponent2d<Block>::const_reverse_component_col_iterator
4364 const typename GenericMultiComponent2d<Block>::size_type col)
const
4369 template<
typename Block>
4371 typename GenericMultiComponent2d<Block>::const_reverse_component_col_iterator
4373 const typename GenericMultiComponent2d<Block>::size_type col)
const
4378 template<
typename Block>
4380 typename GenericMultiComponent2d<Block>::component_row_range_iterator
4387 template<
typename Block>
4396 template<
typename Block>
4405 template<
typename Block>
4414 template<
typename Block>
4423 template<
typename Block>
4432 template<
typename Block>
4441 template<
typename Block>
4450 template<
typename Block>
4459 template<
typename Block>
4468 template<
typename Block>
4477 template<
typename Block>
4486 template<
typename Block>
4495 template<
typename Block>
4505 template<
typename Block>
4514 template<
typename Block>
4523 template<
typename Block>
4531 template<
typename Block>
4541 template<
typename Block>
4549 template<
typename Block>
4559 template<
typename Block>
4568 template<
typename Block>
4576 template<
typename Block>
4585 template<
typename Block>
4594 template<
typename Block>
4603 template<
typename Block>
4613 template<
typename Block>
4622 template<
typename Block>
4632 template<
typename Block>
4642 template<
typename Block>
4653 template<
typename Block>
4663 template<
typename Block>
4674 template<
typename Block>
4683 template<
typename Block>
4693 template<
typename Block>
4702 template<
typename Block>
4712 template<
typename Block>
4722 template<
typename Block>
4733 template<
typename Block>
4743 template<
typename Block>
4758 template <
typename Block>
4763 out<<*(a.matrix_)<<std::endl;
4767 template<
typename Block>
4771 return (*matrix_)[i];
4774 template<
typename Block>
4778 return (*matrix_)[i];
4781 template<
typename Block>
4784 const typename GenericMultiComponent2d<Block>::size_type j)
4786 return (*matrix_)[i][j];
4789 template<
typename Block>
4792 const typename GenericMultiComponent2d<Block>::size_type j)
const
4794 return (*matrix_)[i][j];
4797 template<
typename Block>
4801 return (*matrix_)(point2d);
4804 template<
typename Block>
4808 return (*matrix_)(point2d);
4811 template<
typename Block>
4813 GenericMultiComponent2d<Block>
4817 assert((*
this)[0] != 0);
4819 assert(row_range.
start() < int(this->dim2()));
4820 assert(row_range.
stop() < int(this->dim2()));
4822 assert(col_range.
start() < int(this->dim1()));
4823 assert(col_range.
stop() < int(this->dim1()));
4827 matrix_->bottom_right(row_range,col_range));
4830 template<
typename Block>
4834 template<
typename Block>
4838 template<
typename Block>
4842 template<
typename Block>
4846 template<
typename Block>
4850 template<
typename Block>
4854 template<
typename Block>
4858 template<
typename Block>
4862 template<
typename Block>
4867 template<
typename Block>
4871 template<
typename Block>
4875 matrix_->swap(*(M.matrix_));
4880 template<
typename Block>
4887 typename Block::value_type
min = *std::min_element(this->begin(component),this->end(component));
4888 tmp[component] =
min;
4894 template<
typename Block>
4901 typename Block::value_type
max = *std::max_element(this->begin(component),this->end(component));
4902 tmp[component] =
max;
4908 template<
typename Block>
4912 matrix_->apply(fun);
4916 template<
typename Block>
4920 matrix_->apply(fun);
4925 template<
typename Block>
4934 template<
typename Block>
4984 #endif //SLIP_GENERICMULTICOMPONENT2D_HPP
bool operator!=(const Array< T > &x, const Array< T > &y)
std::size_t iterations() const
Rerturns the number of iterations of the range.
reverse_iterator rbegin()
Returns a read/write reverse iterator that points to the last element in the GenericMultiComponent2d...
Provides a class to modelize the difference of slip::Point2d.
CoordType height() const
compute the height of the Box2d.
void fill(const Block *value)
Fills the container range [begin(),begin()+size()) with a copy of the value array.
iterator2d upper_left()
Returns a read/write iterator2d that points to the first element of the Matrix. It points to the uppe...
iterator begin()
Returns a read/write iterator that points to the first element in the GenericMultiComponent2d. Iteration is done in ordinary element order.
value_type const & const_reference
std::reverse_iterator< component_col_iterator > reverse_component_col_iterator
iterator2d default_iterator
This is a GenericMultiComponent2d class. This container statisfies the BidirectionnalContainer concep...
Block min() const
Returns the min elements of the GenericMultiComponent2d according to the operator <...
std::reverse_iterator< const_component_col_iterator > const_reverse_component_col_iterator
reference operator()(const size_type i, const size_type j)
Subscript access to the data contained in the GenericMultiComponent2d.
size_type cols() const
Returns the number of columns (second dimension size) in the GenericMultiComponent2d.
slip::kstride_iterator< typename Block::const_pointer, Block::SIZE > const_component_iterator
std::reverse_iterator< const_iterator > const_reverse_row_iterator
slip::Matrix< Block >::iterator2d_range iterator2d_range
col_iterator col_begin(const size_type col)
Returns a read/write iterator that points to the first element of the column column in the GenericMul...
slip::stride_iterator< const_block_pointer > const_component_col_iterator
slip::component_iterator2d_box< self, Block::SIZE > component_iterator2d
void resize(const size_type height, const size_type width, const Block &val=Block())
Resizes a GenericMultiComponent2d.
const GenericMultiComponent2d< Block > const_self
static const std::size_t COMPONENTS
std::reverse_iterator< const_component_iterator2d > const_reverse_component_iterator2d
Provides a class to manipulate 2d box.
component_iterator component_row_iterator
reverse_row_iterator row_rbegin(const size_type row)
Returns a read/write reverse iterator that points to the last element of the row row in the GenericMu...
std::reverse_iterator< const_component_col_range_iterator > const_reverse_component_col_range_iterator
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
This is a Vector3d struct. It is a specialization of kvector. It implements some specific 3d operatio...
iterator2d bottom_right()
Returns a read/write iterator2d that points to the past the end element of the Matrix. It points to past the end element of the bottom right element of the Matrix.
T & min(const GrayscaleImage< T > &M1)
Returns the min element of a GrayscaleImage.
reverse_iterator2d rupper_left()
Returns a read/write reverse iterator2d. It points to the bottom right element of the GenericMultiCom...
iterator begin()
Returns a read/write iterator that points to the first element in the Matrix. Iteration is done in or...
Provides a class to manipulate iterator2d within a slip::Box2d. It is used to iterate throw 2d contai...
Block max() const
Returns the max elements of the GenericMultiComponent2d according to the operator <...
size_type dim2() const
Returns the number of columns (second dimension size) in the GenericMultiComponent2d.
std::reverse_iterator< component_col_range_iterator > reverse_component_col_range_iterator
CoordType width() const
compute the width of the Box2d.
slip::stride_iterator< const_pointer > const_col_iterator
row_iterator row_begin(const size_type row)
Returns a read/write iterator that points to the first element of the row row in the GenericMultiComp...
reverse_iterator rend()
Returns a read/write reverse iterator that points to one before the first element in the GenericMulti...
Block::value_type block_value_type
const block_value_type const_block_reference
std::reverse_iterator< col_iterator > reverse_col_iterator
bool empty() const
Returns true if the GenericMultiComponent2d is empty. (Thus size() == 0)
size_type size() const
Returns the number of elements in the GenericMultiComponent2d.
slip::stride_iterator< const_block_pointer > const_component_col_range_iterator
const block_value_type * const_block_pointer
row_iterator row_end(const size_type row)
Returns a read/write iterator that points one past the end element of the row row in the GenericMulti...
void swap(self &M)
Swaps data with another GenericMultiComponent2d.
Provides a class to iterate a 1d range according to a constant step.
GenericMultiComponent2d< Block > & apply(Block(*fun)(Block))
Returns the sums of the elements of the GenericMultiComponent2d.
std::reverse_iterator< const_iterator > const_reverse_iterator
slip::stride_iterator< pointer > col_iterator
std::reverse_iterator< row_range_iterator > reverse_row_range_iterator
Provides some algorithms to compare ranges.
std::reverse_iterator< const_col_range_iterator > const_reverse_col_range_iterator
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
self & operator=(const self &rhs)
Assign a GenericMultiComponent2d.
This is a point2d class, a specialized version of Point<CoordType,DIM> with DIM = 2...
This is some iterator to iterate a 2d MultiComponentContainer into a Box area defined by the indices ...
size_type height() const
Returns the height (first dimension size) in the GenericMultiComponent2d.
ptrdiff_t difference_type
size_type dim1() const
Returns the number of rows (first dimension size) in the GenericMultiComponent2d. ...
std::reverse_iterator< const_iterator2d > const_reverse_iterator2d
This is some iterator to iterate a 2d container into a Box area defined by the indices of the 2d cont...
slip::const_component_iterator2d_range< const_self, Block::SIZE > const_component_iterator2d_range
reverse_col_iterator col_rend(const size_type col)
Returns a read/write reverse iterator that points one past the first element of the column column in ...
slip::Matrix< Block >::const_iterator2d const_iterator2d
void fill(std::size_t component, InputIterator first, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last)
Provides a class to iterate a 2d multicomponent container into two Ranges.
std::reverse_iterator< const_col_iterator > const_reverse_col_iterator
reverse_row_iterator row_rend(const size_type row)
Returns a read/write reverse iterator that points one past the first element of the row row in the Ge...
const_iterator2d const_default_iterator
std::reverse_iterator< const_iterator2d_range > const_reverse_iterator2d_range
void fill(InputIterator first, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last)
std::reverse_iterator< component_iterator > reverse_component_iterator
const_pointer const_row_iterator
void copy(_II first, _II last, _OI output_first)
Copy algorithm optimized for slip iterators.
Difference of Point2D class, specialization of DPoint<CoordType,DIM> with DIM = 2.
bool is_valid() const
Returns true if the range is valid :
std::reverse_iterator< const_component_row_iterator > const_reverse_component_row_iterator
SubType start() const
Accessor of the start subscript of the Range.
block_value_type & block_reference
col_iterator col_end(const size_type col)
Returns a read/write iterator that points one past the end element of the column column in the Generi...
Provides a class to iterate a 2d MultiComponentContainer into a slip::Box2d.
slip::stride_iterator< block_pointer > component_col_range_iterator
slip::stride_iterator< const_col_iterator > const_col_range_iterator
std::reverse_iterator< component_row_range_iterator > reverse_component_row_range_iterator
std::reverse_iterator< const_row_range_iterator > const_reverse_row_range_iterator
iterator2d upper_left()
Returns a read/write iterator2d that points to the first element of the GenericMultiComponent2d. It points to the upper left element of the GenericMultiComponent2d.
This is some iterator to iterate a 2d container into a slip::Box2d area defined by the indices of the...
slip::Matrix< Block >::const_iterator2d_range const_iterator2d_range
virtual ~GenericMultiComponent2d()
Destructor of the GenericMultiComponent2d.
Numerical matrix class. This container statisfies the BidirectionnalContainer concepts of the STL...
This is some iterator to iterate a 2d MultiComponentContainer into a Box area defined by the indices ...
void fill(const Block &value)
Fills the container range [begin(),begin()+size()) with copies of value.
reverse_iterator2d rupper_left()
Returns a read/write reverse iterator2d. It points to the bottom right element of the Matrix...
slip::stride_iterator< const_block_pointer > const_component_row_range_iterator
slip::stride_iterator< col_iterator > col_range_iterator
std::reverse_iterator< component_iterator2d > reverse_component_iterator2d
std::ostream & operator<<(std::ostream &out, const Array< T > &a)
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
GenericMultiComponent2d()
Constructs a GenericMultiComponent2d.
std::reverse_iterator< const_component_row_range_iterator > const_reverse_component_row_range_iterator
pointer operator[](const size_type i)
Subscript access to the row datas contained in the GenericMultiComponent2d.
size_type columns() const
Returns the number of columns (second dimension size) in the GenericMultiComponent2d.
iterator end()
Returns a read/write iterator that points one past the last element in the GenericMultiComponent2d. Iteration is done in ordinary element order.
reverse_col_iterator col_rbegin(const size_type col)
Returns a read/write reverse iterator that points to the last element of the column column in the Gen...
slip::stride_iterator< block_pointer > component_col_iterator
slip::stride_iterator< const_pointer > const_row_range_iterator
size_type max_size() const
Returns the maximal size (number of elements) in the GenericMultiComponent2d.
This is some iterator to iterate a 2d container into two Range defined by the indices and strides of ...
iterator end()
Returns a read/write iterator that points one past the last element in the Matrix. Iteration is done in ordinary element order.
std::reverse_iterator< iterator > reverse_iterator
size_type width() const
Returns the number of columns (second dimension size) in the GenericMultiComponent2d.
int stride() const
Accessor of the stride of the Range.
slip::const_component_iterator2d_box< const_self, Block::SIZE > const_component_iterator2d
GenericMultiComponent2d(const size_type height, const size_type width, std::vector< InputIterator > first_iterators_list, InputIterator last)
Contructs a GenericMultiComponent2d from a 3 ranges.
Provides a class to manipulate Numerical Matrix.
slip::Matrix< Block >::iterator2d iterator2d
Provides some algorithms to apply C like functions to ranges.
Provides a class to modelize 2d points.
std::reverse_iterator< component_iterator2d_range > reverse_component_iterator2d_range
GenericMultiComponent2d(const size_type height, const size_type width, InputIterator first, InputIterator last)
Contructs a GenericMultiComponent2d from a range.
Provides a class to iterate a 1d range according to a step.
void fill(std::vector< InputIterator > first_iterators_list, InputIterator last)
Fills the container range [begin(),begin()+size()) with a copy of the range [first,last)
size_type rows() const
Returns the number of rows (first dimension size) in the GenericMultiComponent2d. ...
reverse_iterator2d rbottom_right()
Returns a read/write reverse iterator2d. It points to past the upper left element of the GenericMulti...
static const std::size_t DIM
slip::kstride_iterator< typename Block::pointer, Block::SIZE > component_iterator
void fill(const typename Block::pointer value)
Fills the container range [begin(),begin()+size()) with a copy of the value array.
bool operator==(const Array< T > &x, const Array< T > &y)
std::reverse_iterator< component_row_iterator > reverse_component_row_iterator
std::reverse_iterator< col_range_iterator > reverse_col_range_iterator
const_component_iterator const_component_row_iterator
reverse_iterator2d rbottom_right()
Returns a read/write reverse iterator2d. It points to past the upper left element of the Matrix...
std::reverse_iterator< iterator > reverse_row_iterator
iterator2d bottom_right()
Returns a read/write iterator2d that points to the past the end element of the GenericMultiComponent2...
value_type const * const_pointer
slip::stride_iterator< block_pointer > component_row_range_iterator
std::reverse_iterator< const_component_iterator > const_reverse_component_iterator
block_value_type * block_pointer
Provides a class to manipulate Ranges.
Provides a class to manipulate iterator2d within a slip::Range. It is used to iterate throw 2d contai...
T & max(const GrayscaleImage< T > &M1)
Returns the max element of a GrayscaleImage.
SubType stop() const
Accessor of the stop subscript of the Range.
std::reverse_iterator< iterator2d_range > reverse_iterator2d_range
slip::stride_iterator< pointer > row_range_iterator
slip::component_iterator2d_range< self, Block::SIZE > component_iterator2d_range
std::reverse_iterator< const_component_iterator2d_range > const_reverse_component_iterator2d_range
std::reverse_iterator< iterator2d > reverse_iterator2d
const_pointer const_iterator