Gromacs  2016.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Types | Public Member Functions | Static Public Member Functions | Related Functions
gmx::ConstArrayRef< T > Class Template Reference

#include <gromacs/utility/arrayref.h>

Description

template<typename T>
class gmx::ConstArrayRef< T >

STL-like container for non-mutable interface to a C array (or part of a std::vector).

Template Parameters
TValue type of elements.

This class provides an interface similar to std::vector<T>, with the following main differences:

This class is useful for writing wrappers that expose a different view of the internal data stored as a single vector/array.

Methods in this class do not throw, except where indicated.

Note that due to a Doxygen limitation, the constructor that takes a C array whose size is known at compile time does not appear in the documentation.

Public Types

typedef T value_type
 Type of values stored in the container.
 
typedef size_t size_type
 Type for representing size of the container.
 
typedef ptrdiff_t difference_type
 Type for representing difference between two container indices.
 
typedef const T & const_reference
 Const reference to a container element.
 
typedef const T * const_pointer
 Const pointer to a container element.
 
typedef const T * const_iterator
 Const iterator type for the container.
 
typedef const_reference reference
 Equal to const_reference since changes are not allowed.
 
typedef const_pointer pointer
 Equal to const_pointer since changes are not allowed.
 
typedef const_iterator iterator
 Equal to const_iterator since changes are not allowed.
 
typedef std::reverse_iterator
< iterator
reverse_iterator
 Standard reverse iterator.
 
typedef std::reverse_iterator
< const_iterator
const_reverse_iterator
 Standard reverse iterator.
 

Public Member Functions

 ConstArrayRef ()
 Constructs an empty reference.
 
 ConstArrayRef (const EmptyArrayRef &)
 Constructs an empty reference. More...
 
 ConstArrayRef (const_pointer begin, const_pointer end)
 Constructs a reference to a particular range. More...
 
 ConstArrayRef (const std::vector< T > &v)
 Constructs a reference to a whole vector. More...
 
const_iterator begin () const
 Returns an iterator to the beginning of the container.
 
const_iterator end () const
 Returns an iterator to the end of the container.
 
const_reverse_iterator rbegin () const
 Returns an iterator to the reverse beginning of the container.
 
const_reverse_iterator rend () const
 Returns an iterator to the reverse end of the container.
 
size_type size () const
 Returns the size of the container.
 
size_type capacity () const
 Identical to size().
 
bool empty () const
 Whether the container is empty.
 
const_reference operator[] (size_type n) const
 Access container element.
 
const_reference at (size_type n) const
 Access container element (throws on out-of-range error).
 
const_reference front () const
 Returns the first element in the container.
 
const_reference back () const
 Returns the last element in the container.
 
const_pointer data () const
 Returns a raw pointer to the contents of the array.
 
void swap (ConstArrayRef< T > &other)
 Swaps referenced memory with the other object. More...
 

Static Public Member Functions

static ConstArrayRef< value_typefromPointers (const value_type *begin, const value_type *end)
 Constructs a reference to a particular range from two pointers. More...
 
static ConstArrayRef< value_typefromArray (const value_type *begin, size_t size)
 Constructs a reference to an array. More...
 
static ConstArrayRef< value_typefromVector (typename std::vector< value_type >::const_iterator begin, typename std::vector< value_type >::const_iterator end)
 Constructs a reference to a particular range in a std::vector. More...
 

Related Functions

(Note that these are not member functions.)

template<typename T >
ConstArrayRef< T > constArrayRefFromPointers (const T *begin, const T *end)
 Constructs a reference to a particular range from two pointers. More...
 
template<typename T >
ConstArrayRef< T > constArrayRefFromArray (const T *begin, size_t size)
 Constructs a reference to an array. More...
 
template<typename T >
ConstArrayRef< T > constArrayRefFromVector (typename std::vector< T >::const_iterator begin, typename std::vector< T >::const_iterator end)
 Constructs a reference to a particular range in a std::vector. More...
 

Constructor & Destructor Documentation

template<typename T>
gmx::ConstArrayRef< T >::ConstArrayRef ( const EmptyArrayRef )
inline

Constructs an empty reference.

This is provided for convenience, such that EmptyArrayRef can be used to initialize any Const ArrayRef, without specifying the template type. It is not explicit to enable that usage.

template<typename T>
gmx::ConstArrayRef< T >::ConstArrayRef ( const_pointer  begin,
const_pointer  end 
)
inline

Constructs a reference to a particular range.

Parameters
[in]beginPointer to the beginning of a range.
[in]endPointer to the end of a range.

Passed pointers must remain valid for the lifetime of this object.

Note
For clarity, use the non-member function constArrayRefFromPointers instead.
template<typename T>
gmx::ConstArrayRef< T >::ConstArrayRef ( const std::vector< T > &  v)
inline

Constructs a reference to a whole vector.

Parameters
[in]vVector to reference.

Passed vector must remain valid and not be reallocated for the lifetime of this object.

This constructor is not explicit to allow directly passing std::vector to a method that takes ConstArrayRef.

Member Function Documentation

template<typename T>
static ConstArrayRef<value_type> gmx::ConstArrayRef< T >::fromArray ( const value_type begin,
size_t  size 
)
inlinestatic

Constructs a reference to an array.

Parameters
[in]beginPointer to the beginning of the array. May be NULL if size is zero.
[in]sizeNumber of elements in the array.

Passed pointer must remain valid for the lifetime of this object.

template<typename T>
static ConstArrayRef<value_type> gmx::ConstArrayRef< T >::fromPointers ( const value_type begin,
const value_type end 
)
inlinestatic

Constructs a reference to a particular range from two pointers.

Parameters
[in]beginPointer to the beginning of a range.
[in]endPointer to the end of a range.

Passed pointers must remain valid for the lifetime of this object.

template<typename T>
static ConstArrayRef<value_type> gmx::ConstArrayRef< T >::fromVector ( typename std::vector< value_type >::const_iterator  begin,
typename std::vector< value_type >::const_iterator  end 
)
inlinestatic

Constructs a reference to a particular range in a std::vector.

Parameters
[in]beginIterator to the beginning of a range.
[in]endIterator to the end of a range.

The referenced vector must remain valid and not be reallocated for the lifetime of this object.

template<typename T>
void gmx::ConstArrayRef< T >::swap ( ConstArrayRef< T > &  other)
inline

Swaps referenced memory with the other object.

The actual memory areas are not modified, only the references are swapped.

Friends And Related Function Documentation

template<typename T >
ConstArrayRef< T > constArrayRefFromArray ( const T *  begin,
size_t  size 
)
related

Constructs a reference to an array.

Parameters
[in]beginPointer to the beginning of the array. May be NULL if size is zero.
[in]sizeNumber of elements in the array.

Passed pointer must remain valid for the lifetime of this object.

template<typename T >
ConstArrayRef< T > constArrayRefFromPointers ( const T *  begin,
const T *  end 
)
related

Constructs a reference to a particular range from two pointers.

Parameters
[in]beginPointer to the beginning of a range.
[in]endPointer to the end of a range.

Passed pointers must remain valid for the lifetime of this object.

template<typename T >
ConstArrayRef< T > constArrayRefFromVector ( typename std::vector< T >::const_iterator  begin,
typename std::vector< T >::const_iterator  end 
)
related

Constructs a reference to a particular range in a std::vector.

Parameters
[in]beginIterator to the beginning of a range.
[in]endIterator to the end of a range.

The referenced vector must remain valid and not be reallocated for the lifetime of this object.


The documentation for this class was generated from the following files: