template class nanoflann::CArray

A STL container (as wrapper) for arrays of constant size defined at compile time (class imported from the MRPT project) This code is an adapted version from Boost, modifed for its integration within MRPT (JLBC, Dec/2009) (Renamed array -> CArray to avoid possible potential conflicts).

See http://www.josuttis.com/cppcode for details and the latest version. See http://www.boost.org/libs/array for Documentation. for documentation.

  1. Copyright Nicolai M. Josuttis 2001. Permission to copy, use, modify, sell and distribute this software is granted provided this copyright notice appears in all copies. This software is provided “as is” without express or implied warranty, and with no claim as to its suitability for any purpose.

29 Jan 2004 - minor fixes (Nico Josuttis) 04 Dec 2003 - update to synch with library TR1 (Alisdair Meredith) 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries. 05 Aug 2001 - minor update (Nico Josuttis) 20 Jan 2001 - STLport fix (Beman Dawes) 29 Sep 2000 - Initial Revision (Nico Josuttis)

Jan 30, 2004

#include <nanoflann.hpp>

template <typename T, std::size_t N>
class CArray
{
public:
    // typedefs

    typedef T value_type;
    typedef T* iterator;
    typedef const T* const_iterator;
    typedef T& reference;
    typedef const T& const_reference;
    typedef std::size_t size_type;
    typedef std::ptrdiff_t difference_type;
    typedef std::reverse_iterator<iterator> reverse_iterator;
    typedef std::reverse_iterator<const_iterator> const_reverse_iterator;

    // enums

    enum
    {
        static_size = N,
    };

    //
fields

    T elems[N];

    //
methods

    iterator begin();
    const_iterator begin() const;
    iterator end();
    const_iterator end() const;
    reverse_iterator rbegin();
    const_reverse_iterator rbegin() const;
    reverse_iterator rend();
    const_reverse_iterator rend() const;
    reference operator [] (size_type i);
    const_reference operator [] (size_type i) const;
    reference at(size_type i);
    const_reference at(size_type i) const;
    reference front();
    const_reference front() const;
    reference back();
    const_reference back() const;
    void resize(const size_t nElements);
    void swap(CArray<T, N>& y);
    const T* data() const;
    T* data();

    template <typename T2>
    CArray<T, N>& operator = (const CArray<T2, N>& rhs);

    void assign(const T& value);

    void assign(
        const size_t n,
        const T& value
        );

    static size_type size();
    static bool empty();
    static size_type max_size();
};

Methods

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.