#include <Teuchos_Array.hpp>
General non-standard functions. | |
| Array< T > & | append (const T &x) |
| Add a new entry at the end of the array. | |
| void | remove (int i) |
| Remove the i-th element from the array, with optional boundschecking. | |
| int | length () const |
| Return number of elements in the array. | |
| std::string | toString () const |
Convert an Array to an std::string. | |
| T * | getRawPtr () |
| Return a raw pointer to beginning of array or NULL if unsized. | |
| const T * | getRawPtr () const |
| Return a raw pointer to beginning of array or NULL if unsized. | |
| static bool | hasBoundsChecking () |
| Return true if Array has been compiled with boundschecking on. | |
Public Types | |
std::vector typedefs | |
| typedef std::vector< T >::value_type | value_type |
| | |
| typedef std::vector< T >::pointer | pointer |
| | |
| typedef std::vector< T >::const_pointer | const_pointer |
| | |
| typedef std::vector< T >::reference | reference |
| | |
| typedef std::vector< T >::const_reference | const_reference |
| | |
| typedef Teuchos_Index | Ordinal |
| | |
| typedef std::vector< T >::iterator | iterator |
| | |
| typedef std::vector< T >::const_iterator | const_iterator |
| | |
| typedef std::vector< T >::reverse_iterator | reverse_iterator |
| | |
| typedef std::vector< T >::const_reverse_iterator | const_reverse_iterator |
| | |
| typedef std::vector< T >::size_type | size_type |
| | |
| typedef std::vector< T >::difference_type | difference_type |
| | |
| typedef std::vector< T >::allocator_type | allocator_type |
| | |
Public Member Functions | |
All constructors | |
| Array () | |
| | |
| Array (Ordinal n, const value_type &value=value_type()) | |
| | |
| Array (const Array< T > &x) | |
| | |
| template<typename InputIterator> | |
| Array (InputIterator first, InputIterator last) | |
| | |
| Array (const ArrayView< const T > &a) | |
| | |
| template<int N> | |
| Array (const Tuple< T, N > &t) | |
| | |
| ~Array () | |
| | |
| Array & | operator= (const Array< T > &a) |
| | |
Other std::vector functions | |
| void | assign (Ordinal 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 (Ordinal new_size, const value_type &x=value_type()) |
| | |
| size_type | capacity () const |
| | |
| bool | empty () const |
| | |
| void | reserve (Ordinal n) |
| | |
| reference | operator[] (Ordinal i) |
| | |
| const_reference | operator[] (Ordinal i) const |
| | |
| reference | at (Ordinal i) |
| | |
| const_reference | at (Ordinal 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, Ordinal 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 () |
| | |
Conversions to and from std::vector. | |
| Array (const std::vector< T > &v) | |
| Copy constructor from an std::vector. | |
| std::vector< T > | toVector () const |
| Explicit copy conversion to an std::vector. | |
| Array & | operator= (const std::vector< T > &v) |
| Assignment operator for std::vector. | |
Views | |
| ArrayView< T > | view (Ordinal offset, Ordinal size) |
| Return non-const view of a contiguous range of elements. | |
| ArrayView< const T > | view (Ordinal offset, Ordinal size) const |
| Return const view of a contiguous range of elements. | |
| ArrayView< T > | operator() (Ordinal offset, Ordinal size) |
| Return a non-const view of a contiguous range of elements (calls view(offset,size)). | |
| ArrayView< const T > | operator() (Ordinal offset, Ordinal size) const |
| Return a non-const view of a contiguous range of elements (calls view(offset,size)). | |
| ArrayView< T > | operator() () |
| Return an non-const ArrayView of *this. | |
| ArrayView< const T > | operator() () const |
| Return an const ArrayView of *this. | |
| operator ArrayView () | |
| Perform an implicit conversion to a non-const ArrayView (calls operator()()). | |
| operator ArrayView () const | |
| Perform an implicit conversion to a non-const ArrayView (calls operator()()). | |
Friends | |
| template<typename T2> | |
| bool | operator== (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
| template<typename T2> | |
| bool | operator!= (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
| template<typename T2> | |
| void | swap (Array< T2 > &a1, Array< T2 > &a2) |
| | |
| template<typename T2> | |
| bool | operator< (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
| template<typename T2> | |
| bool | operator<= (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
| template<typename T2> | |
| bool | operator> (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
| template<typename T2> | |
| bool | operator>= (const Array< T2 > &a1, const Array< T2 > &a2) |
| | |
Related Functions | |
| (Note that these are not member functions.) | |
| bool | operator== (const Array< T > &a1, const Array< T > &a2) |
| Equality operator. | |
| bool | operator!= (const Array< T > &a1, const Array< T > &a2) |
| Non-equality operator. | |
| void | swap (Array< T > &a1, Array< T > &a2) |
| Non-member swap (specializes default std version). | |
| bool | operator< (const Array< T > &a1, const Array< T > &a2) |
| Less-than operator. | |
| bool | operator<= (const Array< T > &a1, const Array< T > &a2) |
| Less-than-or-equal operator. | |
| bool | operator> (const Array< T > &a1, const Array< T > &a2) |
| Greater-than operator. | |
| bool | operator>= (const Array< T > &a1, const Array< T > &a2) |
| Greater-than-or-equal operator. | |
| std::ostream & | operator<< (std::ostream &os, const Array< T > &array) |
| Write an Array to an ostream. | |
| int | hashCode (const Array< T > &array) |
| Return the hash code. | |
| std::vector< T > | createVector (const Array< T > &a) |
| Copy conversion to an std::vector. | |
| std::string | toString (const Array< T > &array) |
| Convert an array to a string representation. | |
| Array< T > | fromStringToArray (const std::string &arrayStr) |
Converts from std::string representation (as created by toString()) back into the array object. | |
| void | extractDataFromISS (std::istringstream &iss, T &data) |
| Extracts data from an istringstream object. | |
| void | extractDataFromISS (std::istringstream &iss, std::string &data) |
| Extracts std::string data from an istringstream object. | |
ToDo: Finish documentation!
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 templat arguments.
| typedef std::vector<T>::value_type Teuchos::Array< T >::value_type |
| typedef std::vector<T>::pointer Teuchos::Array< T >::pointer |
| typedef std::vector<T>::const_pointer Teuchos::Array< T >::const_pointer |
| typedef std::vector<T>::reference Teuchos::Array< T >::reference |
| typedef std::vector<T>::const_reference Teuchos::Array< T >::const_reference |
| typedef Teuchos_Index Teuchos::Array< T >::Ordinal |
| typedef std::vector<T>::iterator Teuchos::Array< T >::iterator |
| typedef std::vector<T>::const_iterator Teuchos::Array< T >::const_iterator |
| typedef std::vector<T>::reverse_iterator Teuchos::Array< T >::reverse_iterator |
| typedef std::vector<T>::const_reverse_iterator Teuchos::Array< T >::const_reverse_iterator |
| typedef std::vector<T>::size_type Teuchos::Array< T >::size_type |
| typedef std::vector<T>::difference_type Teuchos::Array< T >::difference_type |
| typedef std::vector<T>::allocator_type Teuchos::Array< T >::allocator_type |
| Teuchos::Array< T >::Array | ( | ) | [inline] |
| Teuchos::Array< T >::Array | ( | Ordinal | n, | |
| const value_type & | value = value_type() | |||
| ) | [inline, explicit] |
| Teuchos::Array< T >::Array | ( | const Array< T > & | x | ) | [inline] |
| Teuchos::Array< T >::Array | ( | InputIterator | first, | |
| InputIterator | last | |||
| ) | [inline] |
| Teuchos::Array< T >::Array | ( | const ArrayView< const T > & | a | ) | [inline] |
| Teuchos::Array< T >::Array | ( | const Tuple< T, N > & | t | ) | [inline] |
| Teuchos::Array< T >::~Array | ( | ) | [inline] |
| Teuchos::Array< T >::Array | ( | const std::vector< T > & | v | ) | [inline] |
Copy constructor from an std::vector.
| Array& Teuchos::Array< T >::operator= | ( | const Array< T > & | a | ) |
| void Teuchos::Array< T >::assign | ( | Ordinal | n, | |
| const value_type & | val | |||
| ) | [inline] |
| void Teuchos::Array< T >::assign | ( | InputIterator | first, | |
| InputIterator | last | |||
| ) | [inline] |
| Array< T >::iterator Teuchos::Array< T >::begin | ( | ) | [inline] |
| Array< T >::iterator Teuchos::Array< T >::end | ( | ) | [inline] |
| Array< T >::const_iterator Teuchos::Array< T >::begin | ( | ) | const [inline] |
| Array< T >::const_iterator Teuchos::Array< T >::end | ( | ) | const [inline] |
| Array< T >::reverse_iterator Teuchos::Array< T >::rbegin | ( | ) | [inline] |
| Array< T >::reverse_iterator Teuchos::Array< T >::rend | ( | ) | [inline] |
| Array< T >::const_reverse_iterator Teuchos::Array< T >::rbegin | ( | ) | const [inline] |
| Array< T >::const_reverse_iterator Teuchos::Array< T >::rend | ( | ) | const [inline] |
| Array< T >::size_type Teuchos::Array< T >::size | ( | ) | const [inline] |
| Array< T >::size_type Teuchos::Array< T >::max_size | ( | ) | const [inline] |
| void Teuchos::Array< T >::resize | ( | Ordinal | new_size, | |
| const value_type & | x = value_type() | |||
| ) | [inline] |
| Array< T >::size_type Teuchos::Array< T >::capacity | ( | ) | const [inline] |
| bool Teuchos::Array< T >::empty | ( | ) | const [inline] |
| void Teuchos::Array< T >::reserve | ( | Ordinal | n | ) | [inline] |
| Array< T >::reference Teuchos::Array< T >::operator[] | ( | Ordinal | i | ) | [inline] |
| Array< T >::const_reference Teuchos::Array< T >::operator[] | ( | Ordinal | i | ) | const [inline] |
| Array< T >::reference Teuchos::Array< T >::at | ( | Ordinal | i | ) | [inline] |
| Array< T >::const_reference Teuchos::Array< T >::at | ( | Ordinal | i | ) | const [inline] |
| Array< T >::reference Teuchos::Array< T >::front | ( | ) | [inline] |
| Array< T >::const_reference Teuchos::Array< T >::front | ( | ) | const [inline] |
| Array< T >::reference Teuchos::Array< T >::back | ( | ) | [inline] |
| Array< T >::const_reference Teuchos::Array< T >::back | ( | ) | const [inline] |
| void Teuchos::Array< T >::push_back | ( | const value_type & | x | ) | [inline] |
| void Teuchos::Array< T >::pop_back | ( | ) | [inline] |
| Array< T >::iterator Teuchos::Array< T >::insert | ( | iterator | position, | |
| const value_type & | x | |||
| ) | [inline] |
| void Teuchos::Array< T >::insert | ( | iterator | position, | |
| Ordinal | n, | |||
| const value_type & | x | |||
| ) | [inline] |
| void Teuchos::Array< T >::insert | ( | iterator | position, | |
| InputIterator | first, | |||
| InputIterator | last | |||
| ) | [inline] |
| Array< T >::iterator Teuchos::Array< T >::erase | ( | iterator | position | ) | [inline] |
| Array< T >::iterator Teuchos::Array< T >::erase | ( | iterator | first, | |
| iterator | last | |||
| ) | [inline] |
| void Teuchos::Array< T >::swap | ( | Array< T > & | x | ) | [inline] |
| void Teuchos::Array< T >::clear | ( | ) | [inline] |
| 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.
| void Teuchos::Array< T >::remove | ( | int | i | ) | [inline] |
Remove the i-th element from the array, with optional boundschecking.
| int Teuchos::Array< T >::length | ( | ) | const [inline] |
Return number of elements in the array.
Equivalent to size(), but * included for backwards compatibility.
| std::string Teuchos::Array< T >::toString | ( | ) | const [inline] |
Convert an Array to an std::string.
| bool Teuchos::Array< T >::hasBoundsChecking | ( | ) | [inline, static] |
Return true if Array has been compiled with boundschecking on.
| T * Teuchos::Array< T >::getRawPtr | ( | ) | [inline] |
Return a raw pointer to beginning of array or NULL if unsized.
| const T * Teuchos::Array< T >::getRawPtr | ( | ) | const [inline] |
Return a raw pointer to beginning of array or NULL if unsized.
| std::vector< T > Teuchos::Array< T >::toVector | ( | ) | const [inline] |
Explicit copy conversion to an std::vector.
| Array< T > & Teuchos::Array< T >::operator= | ( | const std::vector< T > & | v | ) | [inline] |
Assignment operator for std::vector.
| ArrayView< T > Teuchos::Array< T >::view | ( | Ordinal | offset, | |
| Ordinal | size | |||
| ) | [inline] |
| ArrayView< const T > Teuchos::Array< T >::view | ( | Ordinal | offset, | |
| Ordinal | size | |||
| ) | const [inline] |
| ArrayView< T > Teuchos::Array< T >::operator() | ( | Ordinal | offset, | |
| Ordinal | size | |||
| ) | [inline] |
Return a non-const view of a contiguous range of elements (calls view(offset,size)).
| ArrayView< const T > Teuchos::Array< T >::operator() | ( | Ordinal | offset, | |
| Ordinal | size | |||
| ) | const [inline] |
Return a non-const view of a contiguous range of elements (calls view(offset,size)).
| ArrayView< T > Teuchos::Array< T >::operator() | ( | ) | [inline] |
| ArrayView< const T > Teuchos::Array< T >::operator() | ( | ) | const [inline] |
| Teuchos::Array< T >::operator ArrayView< T > | ( | ) | [inline] |
Perform an implicit conversion to a non-const ArrayView (calls operator()()).
| Teuchos::Array< T >::operator ArrayView< const T > | ( | ) | const [inline] |
Perform an implicit conversion to a non-const ArrayView (calls operator()()).
| bool operator== | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
| bool operator!= | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
| void swap | ( | Array< T2 > & | a1, | |
| Array< T2 > & | a2 | |||
| ) | [friend] |
| bool operator< | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
| bool operator<= | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
| bool operator> | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
| bool operator>= | ( | const Array< T2 > & | a1, | |
| const Array< T2 > & | a2 | |||
| ) | [friend] |
Equality operator.
Non-equality operator.
Non-member swap (specializes default std version).
Less-than operator.
Less-than-or-equal operator.
Greater-than operator.
Greater-than-or-equal operator.
| std::ostream & operator<< | ( | std::ostream & | os, | |
| const Array< T > & | array | |||
| ) | [related] |
| int hashCode | ( | const Array< T > & | array | ) | [related] |
Return the hash code.
| std::vector< T > createVector | ( | const Array< T > & | a | ) | [related] |
Copy conversion to an std::vector.
This function is included for consistency with ArrayView.
| std::string toString | ( | const Array< T > & | array | ) | [related] |
Convert an array to a string representation.
| Array< T > fromStringToArray | ( | const std::string & | arrayStr | ) | [related] |
Converts from std::string representation (as created by toString()) back into the array object.
| arrayStr | [in] The std::string representation of the array (see below). |
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.
| void extractDataFromISS | ( | std::istringstream & | iss, | |
| T & | data | |||
| ) | [related] |
Extracts data from an istringstream object.
fromStringToArray function.| void extractDataFromISS | ( | std::istringstream & | iss, | |
| std::string & | data | |||
| ) | [related] |
Extracts std::string data from an istringstream object.
extractDataFromISS function and is necessary for the proper extraction of std::string objects by the fromStringToArray function.
1.4.7