Teuchos Package Browser (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Private Member Functions | Private Attributes | Friends | Related Functions | List of all members
Teuchos::Array< T > Class Template Reference

Replacement for std::vector that is compatible with the Teuchos Memory Management classes. More...

#include <Teuchos_Array.hpp>

Inheritance diagram for Teuchos::Array< T >:
Inheritance graph
[legend]

Private Member Functions

std::vector< T > & vec (bool isStructureBeingModified=false, bool activeIter=false)
 
const std::vector< T > & vec () const
 
std::vector< T >::iterator raw_position (iterator position)
 
void assertIndex (size_type i) const
 
void assertNotNull () const
 

Private Attributes

std::vector< T > vec_
 

Friends

template<typename T2 >
bool Teuchos::operator== (const Array< T2 > &a1, const Array< T2 > &a2)
 
template<typename T2 >
bool Teuchos::operator!= (const Array< T2 > &a1, const Array< T2 > &a2)
 
template<typename T2 >
void swap (Array< T2 > &a1, Array< T2 > &a2)
 
template<typename T2 >
bool Teuchos::operator< (const Array< T2 > &a1, const Array< T2 > &a2)
 
template<typename T2 >
bool Teuchos::operator<= (const Array< T2 > &a1, const Array< T2 > &a2)
 
template<typename T2 >
bool Teuchos::operator> (const Array< T2 > &a1, const Array< T2 > &a2)
 
template<typename T2 >
bool Teuchos::operator>= (const Array< T2 > &a1, const Array< T2 > &a2)
 

Related Functions

(Note that these are not member functions.)

template<typename T >
bool operator== (const Array< T > &a1, const Array< T > &a2)
 Equality operator. More...
 
template<typename T >
bool operator!= (const Array< T > &a1, const Array< T > &a2)
 Non-equality operator. More...
 
template<typename T >
void swap (Array< T > &a1, Array< T > &a2)
 Non-member swap (specializes default std version). More...
 
template<typename T >
bool operator< (const Array< T > &a1, const Array< T > &a2)
 Less-than operator. More...
 
template<typename T >
bool operator<= (const Array< T > &a1, const Array< T > &a2)
 Less-than-or-equal operator. More...
 
template<typename T >
bool operator> (const Array< T > &a1, const Array< T > &a2)
 Greater-than operator. More...
 
template<typename T >
bool operator>= (const Array< T > &a1, const Array< T > &a2)
 Greater-than-or-equal operator. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &os, const Array< T > &array)
 Write an Array to an ostream. More...
 
template<typename T >
int hashCode (const Array< T > &array)
 Return the hash code. More...
 
template<typename T >
std::vector< T > createVector (const Array< T > &a)
 Copy conversion to an std::vector. More...
 
template<typename T >
std::string toString (const Array< T > &array)
 Convert an array to a string representation. More...
 
template<typename T >
Array< T > fromStringToArray (const std::string &arrayStr)
 Converts from std::string representation (as created by toString()) back into the array object. More...
 
template<typename T >
std::istringstream & operator>> (std::istringstream &in, Array< T > &array)
 A wrapper around the fromStringToArray function which allows the operator>> to be used on Arrays. More...
 
template<typename T >
void extractDataFromISS (std::istringstream &iss, T &data)
 Extracts data from an istringstream object. More...
 
void extractDataFromISS (std::istringstream &iss, std::string &data)
 Extracts std::string data from an istringstream object. More...
 
std::string getArrayTypeNameTraitsFormat ()
 Get the format that is used for the specialization of the TypeName traits class for Array. More...
 

std::vector typedefs

typedef Teuchos_Ordinal Ordinal
 The type of indices. More...
 
typedef Ordinal size_type
 The type of Array sizes and capacities. More...
 
typedef Ordinal difference_type
 The type of the difference between two size_type values. More...
 
typedef std::vector< T >
::value_type 
value_type
 The type of an entry of the Array; for compatibility with std::vector. More...
 
typedef std::vector< T >::pointer pointer
 The type of a pointer to T; for compatibility with std::vector. More...
 
typedef std::vector< T >
::const_pointer 
const_pointer
 The type of a const pointer to T; for compatibility with std::vector. More...
 
typedef std::vector< T >::reference reference
 The type of a reference to T; for compatibility with std::vector. More...
 
typedef std::vector< T >
::const_reference 
const_reference
 The type of a const reference to T; for compatibility with std::vector. More...
 
typedef std::vector< T >
::allocator_type 
allocator_type
 The allocator type; for compatibility with std::vector. More...
 
typedef std::vector< T >::iterator iterator
 The type of a forward iterator. More...
 
typedef std::vector< T >
::const_iterator 
const_iterator
 The type of a const forward iterator. More...
 
typedef std::vector< T >
::reverse_iterator 
reverse_iterator
 The type of a reverse iterator. More...
 
typedef std::vector< T >
::const_reverse_iterator 
const_reverse_iterator
 The type of a const reverse iterator. More...
 

All constructors

 Array ()
 Default constructor; creates an empty Array. More...
 
 Array (size_type n, const value_type &value=value_type())
 Create an array of length n, and fill it with the given value. More...
 
 Array (const Array< T > &x)
 Copy constructor (does a deep copy). More...
 
template<typename InputIterator >
 Array (InputIterator first, InputIterator last)
 Create an array, and fill it with values from the given iterator range. More...
 
 Array (const ArrayView< const T > &a)
 Create an Array which is a deep copy of the given ArrayView. More...
 
template<int N>
 Array (const Tuple< T, N > &t)
 Copy constructor from the given Tuple. More...
 
 Array (std::initializer_list< T > list)
 Create an array with braced initialization. More...
 
 ~Array ()
 Destructor. More...
 
Arrayoperator= (const Array< T > &a)
 Assignment operator (does a deep copy). More...
 

Other std::vector functions

Array has mostly the same interface as std::vector. This allows use of Array in place of std::vector, for gradual porting to use the Teuchos Memory Management classes.

void assign (size_type n, const value_type &val)
 
template<typename InputIterator >
void assign (InputIterator first, InputIterator last)
 
iterator begin ()
 
iterator end ()
 
const_iterator begin () const
 
const_iterator end () const
 
reverse_iterator rbegin ()
 
reverse_iterator rend ()
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator rend () const
 
size_type size () const
 
size_type max_size () const
 
void resize (size_type new_size, const value_type &x=value_type())
 
size_type capacity () const
 
bool empty () const
 
void reserve (size_type n)
 
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 push_back (const value_type &x)
 
void pop_back ()
 
iterator insert (iterator position, const value_type &x)
 
void insert (iterator position, size_type n, const value_type &x)
 
template<typename InputIterator >
void insert (iterator position, InputIterator first, InputIterator last)
 
iterator erase (iterator position)
 
iterator erase (iterator first, iterator last)
 
void swap (Array &x)
 
void clear ()
 

General non-standard functions.

Array< T > & append (const T &x)
 Add a new entry at the end of the array. More...
 
void remove (int i)
 Remove the i-th element from the array, with optional boundschecking. More...
 
int length () const
 Return number of elements in the array. More...
 
std::string toString () const
 Convert an Array to an std::string More...
 
T * getRawPtr ()
 Return a raw pointer to beginning of array or NULL if unsized. More...
 
T * data ()
 Return a raw pointer to beginning of array. More...
 
const T * getRawPtr () const
 Return a const raw pointer to beginning of array or NULL if unsized. More...
 
const T * data () const
 Return a const raw pointer to beginning of array. More...
 
static bool hasBoundsChecking ()
 Return true if Array has been compiled with boundschecking on. More...
 

Conversions to and from std::vector.

 Array (const std::vector< T > &v)
 Copy constructor from an std::vector (does a deep copy). More...
 
std::vector< T > toVector () const
 Explicit copy conversion to an std::vector. More...
 
Arrayoperator= (const std::vector< T > &v)
 Assignment operator for std::vector. More...
 

Views

ArrayView< T > view (size_type offset, size_type size)
 Return non-const view of a contiguous range of elements. More...
 
ArrayView< const T > view (size_type offset, size_type size) const
 Return const view of a contiguous range of elements. More...
 
ArrayView< T > operator() (size_type offset, size_type size)
 Return a non-const view of a contiguous range of elements (calls view(offset,size)). More...
 
ArrayView< const T > operator() (size_type offset, size_type size) const
 Return a const view of a contiguous range of elements (calls view(offset,size)). More...
 
ArrayView< T > operator() ()
 Return an non-const ArrayView of *this. More...
 
ArrayView< const T > operator() () const
 Return an const ArrayView of *this. More...
 
 operator ArrayView< T > ()
 Perform an implicit conversion to a non-const ArrayView (calls operator()()). More...
 
 operator ArrayView< const T > () const
 Perform an implicit conversion to a non-const ArrayView (calls operator()()). More...
 

Detailed Description

template<typename T>
class Teuchos::Array< T >

Replacement for std::vector that is compatible with the Teuchos Memory Management classes.

Template Parameters
TThe type of each entry in the array.

This class implements a one-dimensional array, with a number of entries specified at run time. It can be used as a drop-in replacement for the C++98 version of std::vector<T>. It also has functions and methods for interacting with the other Teuchos Memory Management classes. For example, you can get a nonpersisting view of an Array's entries as an ArrayView, or a nonowning (weak) ArrayRCP.

If the CMake configuration option Teuchos_ENABLE_DEBUG is ON at build time, Array will do bounds and iterator checking at run time. This has a nontrivial run-time cost, so it is off by default, but you may find it useful for debugging. Please note that if debugging is on, the types of Array's iterators change in order to implement these checks. Thus, you should always use Array's typedefs to get the iterator types, and not assume that they are raw pointers.

Tuple Construction

A user can create a Teuchos::Tuple object to initialize an Array object by using one of the the convenient overloaded Teuchos::tuple() non-member constructor functions. For example, see Array_test.cpp for how this is done.

Design Discussion

Currently, this class defines implicit conversions to ArrayView. An alternative design would be to have Array derive from ArrayView. This is a workable design but it would impart some extra storage and runtime overhead. Perhaps the most significant overhead would be having the reset the base ArrayView pointer and size on each and every change in the structure of the container. This would import extra overhead beyond a straight std::vector.

The big advantage of deriving Array from ArrayView is that this would allow Array to be used to call some functions taking ArrayView without requiring an implicit conversion. While the implicit shallow conversion from Array to ArrayView is very cheap (just a pointer and int copy), it does cause problems where the compiler will refuse to perform an implicit conversion to call a templated function. However, note that an implicit conversion to an ArrayView<const T> would always have to be performed no matter what.

In summary, having Array implicitly convert to ArrayView instead of having Array derive from ArrayView results in faster and simpler code at the expense of the compiler refusing the make implicit conversions in some cases when calling template functions. Such conversion problems can always be dealt with by using explicit template arguments.

Definition at line 40 of file Teuchos_Array.hpp.

Member Typedef Documentation

template<typename T>
typedef Teuchos_Ordinal Teuchos::Array< T >::Ordinal

The type of indices.

Definition at line 203 of file Teuchos_Array.hpp.

template<typename T>
typedef Ordinal Teuchos::Array< T >::size_type

The type of Array sizes and capacities.

Definition at line 205 of file Teuchos_Array.hpp.

template<typename T>
typedef Ordinal Teuchos::Array< T >::difference_type

The type of the difference between two size_type values.

Definition at line 207 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::value_type Teuchos::Array< T >::value_type

The type of an entry of the Array; for compatibility with std::vector.

Definition at line 209 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::pointer Teuchos::Array< T >::pointer

The type of a pointer to T; for compatibility with std::vector.

Definition at line 211 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::const_pointer Teuchos::Array< T >::const_pointer

The type of a const pointer to T; for compatibility with std::vector.

Definition at line 213 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::reference Teuchos::Array< T >::reference

The type of a reference to T; for compatibility with std::vector.

Definition at line 215 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::const_reference Teuchos::Array< T >::const_reference

The type of a const reference to T; for compatibility with std::vector.

Definition at line 217 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::allocator_type Teuchos::Array< T >::allocator_type

The allocator type; for compatibility with std::vector.

Definition at line 219 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::iterator Teuchos::Array< T >::iterator

The type of a forward iterator.

Definition at line 232 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::const_iterator Teuchos::Array< T >::const_iterator

The type of a const forward iterator.

Definition at line 234 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::reverse_iterator Teuchos::Array< T >::reverse_iterator

The type of a reverse iterator.

Definition at line 236 of file Teuchos_Array.hpp.

template<typename T>
typedef std::vector<T>::const_reverse_iterator Teuchos::Array< T >::const_reverse_iterator

The type of a const reverse iterator.

Definition at line 238 of file Teuchos_Array.hpp.

Constructor & Destructor Documentation

template<typename T >
Teuchos::Array< T >::Array ( )
inline

Default constructor; creates an empty Array.

Definition at line 770 of file Teuchos_Array.hpp.

template<typename T >
Teuchos::Array< T >::Array ( size_type  n,
const value_type value = value_type() 
)
inlineexplicit

Create an array of length n, and fill it with the given value.

Definition at line 778 of file Teuchos_Array.hpp.

template<typename T>
Teuchos::Array< T >::Array ( const Array< T > &  x)
inline

Copy constructor (does a deep copy).

Definition at line 788 of file Teuchos_Array.hpp.

template<typename T >
template<typename InputIterator >
Teuchos::Array< T >::Array ( InputIterator  first,
InputIterator  last 
)
inline

Create an array, and fill it with values from the given iterator range.

Definition at line 798 of file Teuchos_Array.hpp.

template<typename T>
Teuchos::Array< T >::Array ( const ArrayView< const T > &  a)
inline

Create an Array which is a deep copy of the given ArrayView.

Definition at line 813 of file Teuchos_Array.hpp.

template<typename T>
template<int N>
Teuchos::Array< T >::Array ( const Tuple< T, N > &  t)
inline

Copy constructor from the given Tuple.

Definition at line 825 of file Teuchos_Array.hpp.

template<typename T>
Teuchos::Array< T >::Array ( std::initializer_list< T >  list)
inline

Create an array with braced initialization.

Definition at line 834 of file Teuchos_Array.hpp.

template<typename T >
Teuchos::Array< T >::~Array ( )
inline

Destructor.

Definition at line 808 of file Teuchos_Array.hpp.

template<typename T>
Teuchos::Array< T >::Array ( const std::vector< T > &  v)
inline

Copy constructor from an std::vector (does a deep copy).

Definition at line 1381 of file Teuchos_Array.hpp.

Member Function Documentation

template<typename T>
Array< T > & Teuchos::Array< T >::operator= ( const Array< T > &  a)
inline

Assignment operator (does a deep copy).

Definition at line 843 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::assign ( size_type  n,
const value_type val 
)
inline

Definition at line 857 of file Teuchos_Array.hpp.

template<typename T >
template<typename InputIterator >
void Teuchos::Array< T >::assign ( InputIterator  first,
InputIterator  last 
)
inline

Definition at line 867 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::iterator Teuchos::Array< T >::begin ( )
inline

Definition at line 878 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::iterator Teuchos::Array< T >::end ( )
inline

Definition at line 902 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_iterator Teuchos::Array< T >::begin ( ) const
inline

Definition at line 913 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_iterator Teuchos::Array< T >::end ( ) const
inline

Definition at line 946 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reverse_iterator Teuchos::Array< T >::rbegin ( )
inline

Definition at line 958 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reverse_iterator Teuchos::Array< T >::rend ( )
inline

Definition at line 970 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reverse_iterator Teuchos::Array< T >::rbegin ( ) const
inline

Definition at line 982 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reverse_iterator Teuchos::Array< T >::rend ( ) const
inline

Definition at line 994 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::size_type Teuchos::Array< T >::size ( ) const
inline

Definition at line 1006 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::size_type Teuchos::Array< T >::max_size ( ) const
inline

Definition at line 1014 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::resize ( size_type  new_size,
const value_type x = value_type() 
)
inline

Definition at line 1022 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::size_type Teuchos::Array< T >::capacity ( ) const
inline

Definition at line 1033 of file Teuchos_Array.hpp.

template<typename T >
bool Teuchos::Array< T >::empty ( ) const
inline

Definition at line 1040 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::reserve ( size_type  n)
inline

Definition at line 1047 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reference Teuchos::Array< T >::operator[] ( size_type  i)
inline

Definition at line 1058 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reference Teuchos::Array< T >::operator[] ( size_type  i) const
inline

Definition at line 1069 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reference Teuchos::Array< T >::at ( size_type  i)
inline

Definition at line 1080 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reference Teuchos::Array< T >::at ( size_type  i) const
inline

Definition at line 1091 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reference Teuchos::Array< T >::front ( )
inline

Definition at line 1102 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reference Teuchos::Array< T >::front ( ) const
inline

Definition at line 1113 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::reference Teuchos::Array< T >::back ( )
inline

Definition at line 1124 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::const_reference Teuchos::Array< T >::back ( ) const
inline

Definition at line 1135 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::push_back ( const value_type x)
inline

Definition at line 1145 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::pop_back ( )
inline

Definition at line 1155 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::iterator Teuchos::Array< T >::insert ( iterator  position,
const value_type x 
)
inline

Definition at line 1181 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::insert ( iterator  position,
size_type  n,
const value_type x 
)
inline

Definition at line 1203 of file Teuchos_Array.hpp.

template<typename T >
template<typename InputIterator >
void Teuchos::Array< T >::insert ( iterator  position,
InputIterator  first,
InputIterator  last 
)
inline

Definition at line 1218 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::iterator Teuchos::Array< T >::erase ( iterator  position)
inline

Definition at line 1234 of file Teuchos_Array.hpp.

template<typename T >
Array< T >::iterator Teuchos::Array< T >::erase ( iterator  first,
iterator  last 
)
inline

Definition at line 1258 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::swap ( Array< T > &  x)
inline

Definition at line 1287 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::clear ( )
inline

Definition at line 1297 of file Teuchos_Array.hpp.

template<typename T>
Array< T > & Teuchos::Array< T >::append ( const T &  x)
inline

Add a new entry at the end of the array.

Resize to allow space for the new entry.

Definition at line 1310 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::remove ( int  i)
inline

Remove the i-th element from the array, with optional boundschecking.

Definition at line 1318 of file Teuchos_Array.hpp.

template<typename T >
int Teuchos::Array< T >::length ( ) const
inline

Return number of elements in the array.

Equivalent to size(), but * included for backwards compatibility.

Definition at line 1329 of file Teuchos_Array.hpp.

template<typename T >
std::string Teuchos::Array< T >::toString ( ) const
inline

Convert an Array to an std::string

Definition at line 1336 of file Teuchos_Array.hpp.

template<typename T >
bool Teuchos::Array< T >::hasBoundsChecking ( )
inlinestatic

Return true if Array has been compiled with boundschecking on.

Definition at line 1343 of file Teuchos_Array.hpp.

template<typename T >
T * Teuchos::Array< T >::getRawPtr ( )
inline

Return a raw pointer to beginning of array or NULL if unsized.

Definition at line 1354 of file Teuchos_Array.hpp.

template<typename T >
T * Teuchos::Array< T >::data ( )
inline

Return a raw pointer to beginning of array.

Same semantics as getRawPtr (which see).

Definition at line 1360 of file Teuchos_Array.hpp.

template<typename T >
const T * Teuchos::Array< T >::getRawPtr ( ) const
inline

Return a const raw pointer to beginning of array or NULL if unsized.

Definition at line 1366 of file Teuchos_Array.hpp.

template<typename T >
const T * Teuchos::Array< T >::data ( ) const
inline

Return a const raw pointer to beginning of array.

Same semantics as getRawPtr (which see).

Definition at line 1372 of file Teuchos_Array.hpp.

template<typename T >
std::vector< T > Teuchos::Array< T >::toVector ( ) const
inline

Explicit copy conversion to an std::vector.

Definition at line 1391 of file Teuchos_Array.hpp.

template<typename T>
Array< T > & Teuchos::Array< T >::operator= ( const std::vector< T > &  v)
inline

Assignment operator for std::vector.

Definition at line 1401 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< T > Teuchos::Array< T >::view ( size_type  offset,
size_type  size 
)
inline

Return non-const view of a contiguous range of elements.

  <b>Preconditions:</b><ul>

0 <= offset && offset + size <= this->size()

Postconditions:

  • returnVal.size() == size

NOTE: A size==0 view of even an empty Array is allowed and returns a null view.

Definition at line 1415 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< const T > Teuchos::Array< T >::view ( size_type  offset,
size_type  size 
) const
inline

Return const view of a contiguous range of elements.

  <b>Preconditions:</b><ul>

0 <= offset && offset + size <= this->size()

Postconditions:

  • returnVal.size() == size

NOTE: A size==0 view of even an empty Array is allowed and returns a null view.

Definition at line 1429 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< T > Teuchos::Array< T >::operator() ( size_type  offset,
size_type  size 
)
inline

Return a non-const view of a contiguous range of elements (calls view(offset,size)).

Definition at line 1446 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< const T > Teuchos::Array< T >::operator() ( size_type  offset,
size_type  size 
) const
inline

Return a const view of a contiguous range of elements (calls view(offset,size)).

Definition at line 1453 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< T > Teuchos::Array< T >::operator() ( )
inline

Return an non-const ArrayView of *this.

NOTE: This will return a null ArrayView if this->size() == 0.

Definition at line 1460 of file Teuchos_Array.hpp.

template<typename T >
ArrayView< const T > Teuchos::Array< T >::operator() ( ) const
inline

Return an const ArrayView of *this.

NOTE: This will return a null ArrayView if this->size() == 0.

Definition at line 1469 of file Teuchos_Array.hpp.

template<typename T >
Teuchos::Array< T >::operator ArrayView< T > ( )
inline

Perform an implicit conversion to a non-const ArrayView (calls operator()()).

Definition at line 1478 of file Teuchos_Array.hpp.

template<typename T >
Teuchos::Array< T >::operator ArrayView< const T > ( ) const
inline

Perform an implicit conversion to a non-const ArrayView (calls operator()()).

Definition at line 1485 of file Teuchos_Array.hpp.

template<typename T >
std::vector< T > & Teuchos::Array< T >::vec ( bool  isStructureBeingModified = false,
bool  activeIter = false 
)
inlineprivate

Definition at line 1496 of file Teuchos_Array.hpp.

template<typename T >
const std::vector< T > & Teuchos::Array< T >::vec ( ) const
inlineprivate

Definition at line 1523 of file Teuchos_Array.hpp.

template<typename T >
std::vector< T >::iterator Teuchos::Array< T >::raw_position ( iterator  position)
inlineprivate

Definition at line 1535 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::assertIndex ( size_type  i) const
inlineprivate

Definition at line 1555 of file Teuchos_Array.hpp.

template<typename T >
void Teuchos::Array< T >::assertNotNull ( ) const
inlineprivate

Definition at line 1565 of file Teuchos_Array.hpp.

Friends And Related Function Documentation

template<typename T>
template<typename T2 >
bool Teuchos::operator== ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
bool Teuchos::operator!= ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
void swap ( Array< T2 > &  a1,
Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
bool Teuchos::operator< ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
bool Teuchos::operator<= ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
bool Teuchos::operator> ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T>
template<typename T2 >
bool Teuchos::operator>= ( const Array< T2 > &  a1,
const Array< T2 > &  a2 
)
friend

template<typename T >
bool operator== ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Equality operator.

template<typename T >
bool operator!= ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Non-equality operator.

template<typename T >
void swap ( Array< T > &  a1,
Array< T > &  a2 
)
related

Non-member swap (specializes default std version).

template<typename T >
bool operator< ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Less-than operator.

template<typename T >
bool operator<= ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Less-than-or-equal operator.

template<typename T >
bool operator> ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Greater-than operator.

template<typename T >
bool operator>= ( const Array< T > &  a1,
const Array< T > &  a2 
)
related

Greater-than-or-equal operator.

template<typename T >
std::ostream & operator<< ( std::ostream &  os,
const Array< T > &  array 
)
related

Write an Array to an ostream.

This prints arrays in the form:

{ 1.0, 2.0, 3.0 }
template<typename T >
int hashCode ( const Array< T > &  array)
related

Return the hash code.

template<typename T >
std::vector< T > createVector ( const Array< T > &  a)
related

Copy conversion to an std::vector.

This function is included for consistency with ArrayView.

template<typename T >
std::string toString ( const Array< T > &  array)
related

Convert an array to a string representation.

template<typename T >
Array< T > fromStringToArray ( const std::string &  arrayStr)
related

Converts from std::string representation (as created by toString()) back into the array object.

Parameters
arrayStr[in] The std::string representation of the array (see below).

Exceptions: If the std::string representation is not valid, then an std::exception of type InvalidArrayStringRepresentation with be thrown with a decent error message attached.

The formating of the std::string arrayStr must look like:

{  val[0], val[1], val[2], val[3], ..., val[n-1] }

Currently operator>>() is used to convert the entries from their std::string representation to objects of type T. White space is unimportant and the parser keys off of ',', '{' and '}' so even newlines are allowed. In the future, a traits class might be defined that will allow for finer-grained control of how the conversion from strings to values is performed in cases where operator>>() does not exist for certain types.

Warning! Currently this function only supports reading in flat array objects for basic types like bool, int, and double and does not yet support nested arrays (i.e. no Array<Array<int> >) or other such fancy nested types. Support for nested arrays and other user defined types T can be added in the future with no impact on user code. Only the parser for the array needs to be improved. More specifically, the current implementation will not work for any types T who's std::string representation contains the characters ',' or '}'. This implementation can be modified to allow any such types by watching for the nesting of common enclosing structures like [...], {...} or (...) within each entry of the std::string representation. However, this should all just work fine on most machines for the types int, bool, float, double etc.

Warning! Trying to read in an array in std::string format of doubles in scientific notation such as {1e+2,3.53+6,...} into an array object such as Array<int> will not yield the correct results. If one wants to allow a neutral std::string representation to be read in as an Array<double> object or an Array<int> object, then general formating such as {100,3530000,...} should be used. This templated function is unable to deal std::complex type conversion issues.

template<typename T >
std::istringstream & operator>> ( std::istringstream &  in,
Array< T > &  array 
)
related

A wrapper around the fromStringToArray function which allows the operator>> to be used on Arrays.

Definition at line 678 of file Teuchos_Array.hpp.

template<typename T >
void extractDataFromISS ( std::istringstream &  iss,
T &  data 
)
related

Extracts data from an istringstream object.

Note
This templated function is necessary for the proper extraction of data by the fromStringToArray function.

Definition at line 689 of file Teuchos_Array.hpp.

template<typename T>
void extractDataFromISS ( std::istringstream &  iss,
std::string &  data 
)
related

Extracts std::string data from an istringstream object.

Note
This function overloads the templated extractDataFromISS function and is necessary for the proper extraction of std::string objects by the fromStringToArray function.

Definition at line 701 of file Teuchos_Array.hpp.

template<typename T>
std::string getArrayTypeNameTraitsFormat ( )
related

Get the format that is used for the specialization of the TypeName traits class for Array.

The string returned will contain only one "*" character. The "*" character should then be replaced with the actual template type of the array.

Definition at line 719 of file Teuchos_Array.hpp.

Member Data Documentation

template<typename T>
std::vector<T> Teuchos::Array< T >::vec_
private

Definition at line 486 of file Teuchos_Array.hpp.


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