52 template <
typename T, std::
size_t N>
70 inline iterator
end() {
return elems+N; }
71 inline const_iterator
end()
const {
return elems+N; }
74 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) 77 #elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310) 90 const_reverse_iterator
rbegin()
const {
94 const_reverse_iterator
rend()
const {
99 inline reference
operator[](size_type i) {
return elems[i]; }
100 inline const_reference
operator[](size_type i)
const {
return elems[i]; }
104 const_reference
at(size_type i)
const {
rangecheck(i);
return elems[i]; }
107 reference
front() {
return elems[0]; }
108 const_reference
front()
const {
return elems[0]; }
109 reference
back() {
return elems[N-1]; }
110 const_reference
back()
const {
return elems[N-1]; }
113 static inline size_type
size() {
return N; }
114 static bool empty() {
return false; }
119 inline void resize(
const size_t nElements) {
121 throw std::logic_error(
format(
"Try to change the size of a %u-CArray to %u.",static_cast<unsigned>(N),static_cast<unsigned>(nElements)));
136 template <
typename T2>
145 for (
size_t i=0;i<N;i++) elems[i]=value;
151 if (N!=n)
throw std::out_of_range(
"CArray<>: assign() of incorrect length");
153 for (
size_t i=0;i<N;i++) elems[i]=value;
157 template<
typename I>
void assign(I b,
const I &
e) {
159 if (
std::distance(b,e)!=N)
throw std::out_of_range(
"CArray<>: assign() of incorrect length");
161 for (iterator i=
begin();i<
end();++i) *i=*(b++);
168 throw std::out_of_range(
"CArray<>: index out of range");
175 template <
typename T>
191 iterator
begin() {
return reinterpret_cast< iterator
>( &c ); }
192 const_iterator
begin()
const {
return reinterpret_cast< const_iterator
>( &c ); }
193 iterator
end() {
return reinterpret_cast< iterator
>( &c ); }
194 const_iterator
end()
const {
return reinterpret_cast< const_iterator
>( &c ); }
197 #if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS) 200 #elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310) 217 const_reverse_iterator
rend()
const {
222 reference
at(size_type i) {
224 throw std::out_of_range(
"CArray<0>: index out of range");
226 const_reference
at(size_type i)
const {
228 throw std::out_of_range(
"<0>: index out of range");
232 static size_type
size() {
return 0; }
233 static bool empty() {
return true; }
244 const T*
data()
const {
return NULL; }
248 template <
typename T2 >
257 inline reference
operator[](size_type ) { makes_no_sense();
static T dumm=0;
return dumm; }
258 inline const_reference
operator[](size_type )
const { makes_no_sense();
static T dumm=0;
return dumm; }
261 reference
front() { makes_no_sense(); }
262 const_reference
front()
const { makes_no_sense(); }
263 reference
back() { makes_no_sense(); }
264 const_reference
back()
const { makes_no_sense(); }
271 throw std::out_of_range(
"CArray<0>: index out of range");
276 template<
class T, std::
size_t N>
280 template<
class T, std::
size_t N>
282 return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
284 template<
class T, std::
size_t N>
288 template<
class T, std::
size_t N>
292 template<
class T, std::
size_t N>
296 template<
class T, std::
size_t N>
const_reference back() const
bool operator!=(const CArray< T, N > &x, const CArray< T, N > &y)
std::ptrdiff_t difference_type
const_reference at(size_type i) const
reverse_iterator rbegin()
const_reverse_iterator rend() const
std::reverse_iterator< iterator > reverse_iterator
std::string BASE_IMPEXP format(const char *fmt,...) MRPT_printf_format_check(1
A std::string version of C sprintf.
const_iterator begin() const
std::reverse_iterator< const_iterator > const_reverse_iterator
reference at(size_type i)
const T & const_reference
void assign(I b, const I &e)
T value(details::expression_node< T > *n)
void assign(const T &value)
void assign(const size_t n, const T &value)
void resize(const size_t nElements)
This method has no effects in this class, but raises an exception if the expected size does not match...
static size_type max_size()
const_iterator begin() const
reference operator[](size_type i)
void swap(CArray< T, N > &y)
CArray< T, N > & operator=(const CArray< T2, N > &rhs)
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
const_reference back() const
reference at(size_type i)
A STL container (as wrapper) for arrays of constant size defined at compile time. ...
const_iterator end() const
std::reverse_iterator< iterator > reverse_iterator
reverse_iterator rbegin()
const_reference front() const
bool operator>(const CArray< T, N > &x, const CArray< T, N > &y)
const_reverse_iterator rend() const
T equal(const T v0, const T v1)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
const_reverse_iterator rbegin() const
std::reverse_iterator< const_iterator > const_reverse_iterator
const_reference operator[](size_type i) const
const_reverse_iterator rbegin() const
const_reference at(size_type i) const
static void makes_no_sense()
x y t t *t x y t t t x y t t t x *y t *t t x *y t *t t x y t t t x y t t t x(y+z)
const_reference front() const
bool operator==(const CArray< T, N > &x, const CArray< T, N > &y)
static void rangecheck(size_type i)
void swap(CArray< T, 0 > &y)
std::ptrdiff_t difference_type
static size_type max_size()
const_iterator end() const
reference operator[](size_type)
const_reference operator[](size_type) const
bool operator>=(const CArray< T, N > &x, const CArray< T, N > &y)
double BASE_IMPEXP distance(const TPoint2D &p1, const TPoint2D &p2)
Gets the distance between two points in a 2D space.
const T & const_reference