Gromacs
2016.6
|
#include <gromacs/utility/arrayref.h>
STL-like container for non-mutable interface to a C array (or part of a std::vector).
T | Value 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_type > | fromPointers (const value_type *begin, const value_type *end) |
Constructs a reference to a particular range from two pointers. More... | |
static ConstArrayRef< value_type > | fromArray (const value_type *begin, size_t size) |
Constructs a reference to an array. More... | |
static ConstArrayRef< value_type > | fromVector (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... | |
|
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.
|
inline |
Constructs a reference to a particular range.
[in] | begin | Pointer to the beginning of a range. |
[in] | end | Pointer to the end of a range. |
Passed pointers must remain valid for the lifetime of this object.
|
inline |
Constructs a reference to a whole vector.
[in] | v | Vector 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.
|
inlinestatic |
Constructs a reference to an array.
[in] | begin | Pointer to the beginning of the array. May be NULL if size is zero. |
[in] | size | Number of elements in the array. |
Passed pointer must remain valid for the lifetime of this object.
|
inlinestatic |
Constructs a reference to a particular range from two pointers.
[in] | begin | Pointer to the beginning of a range. |
[in] | end | Pointer to the end of a range. |
Passed pointers must remain valid for the lifetime of this object.
|
inlinestatic |
Constructs a reference to a particular range in a std::vector.
[in] | begin | Iterator to the beginning of a range. |
[in] | end | Iterator to the end of a range. |
The referenced vector must remain valid and not be reallocated for the lifetime of this object.
|
inline |
Swaps referenced memory with the other object.
The actual memory areas are not modified, only the references are swapped.
|
related |
Constructs a reference to an array.
[in] | begin | Pointer to the beginning of the array. May be NULL if size is zero. |
[in] | size | Number of elements in the array. |
Passed pointer must remain valid for the lifetime of this object.
|
related |
Constructs a reference to a particular range from two pointers.
[in] | begin | Pointer to the beginning of a range. |
[in] | end | Pointer to the end of a range. |
Passed pointers must remain valid for the lifetime of this object.
|
related |
Constructs a reference to a particular range in a std::vector.
[in] | begin | Iterator to the beginning of a range. |
[in] | end | Iterator to the end of a range. |
The referenced vector must remain valid and not be reallocated for the lifetime of this object.