Reference documentation for deal.II version 8.5.1
Public Types | Public Member Functions | Protected Member Functions | List of all members
Table< 2, T > Class Template Reference

#include <deal.II/base/table.h>

Inheritance diagram for Table< 2, T >:
[legend]

Public Types

typedef TableBase< 2, T >::size_type size_type
 
- Public Types inherited from TableBase< 2, T >
typedef AlignedVector< T >::size_type size_type
 

Public Member Functions

 Table ()
 
 Table (const unsigned int size1, const unsigned int size2)
 
template<typename InputIterator >
 Table (const unsigned int size1, const unsigned int size2, InputIterator entries, const bool C_style_indexing=true)
 
void reinit (const unsigned int size1, const unsigned int size2, const bool omit_default_initialization=false)
 
::internal::TableBaseAccessors::Accessor< 2, T, true, 1 > operator[] (const unsigned int i) const
 
::internal::TableBaseAccessors::Accessor< 2, T, false, 1 > operator[] (const unsigned int i)
 
AlignedVector< T >::const_reference operator() (const unsigned int i, const unsigned int j) const
 
AlignedVector< T >::reference operator() (const unsigned int i, const unsigned int j)
 
AlignedVector< T >::reference operator() (const TableIndices< 2 > &indices)
 
AlignedVector< T >::const_reference operator() (const TableIndices< 2 > &indices) const
 
unsigned int n_rows () const
 
unsigned int n_cols () const
 
- Public Member Functions inherited from TableBase< 2, T >
 TableBase ()
 
 TableBase (const TableIndices< N > &sizes)
 
 TableBase (const TableIndices< N > &sizes, InputIterator entries, const bool C_style_indexing=true)
 
 TableBase (const TableBase< N, T > &src)
 
 TableBase (const TableBase< N, T2 > &src)
 
 TableBase (TableBase< N, T > &&src)
 
 ~TableBase ()
 
TableBase< N, T > & operator= (const TableBase< N, T > &src)
 
TableBase< N, T > & operator= (const TableBase< N, T2 > &src)
 
TableBase< N, T > & operator= (TableBase< N, T > &&src)
 
bool operator== (const TableBase< N, T > &T2) const
 
void reset_values ()
 
void reinit (const TableIndices< N > &new_size, const bool omit_default_initialization=false)
 
unsigned int size (const unsigned int i) const
 
const TableIndices< N > & size () const
 
size_type n_elements () const
 
bool empty () const
 
void fill (InputIterator entries, const bool C_style_indexing=true)
 
void fill (const T &value)
 
AlignedVector< T >::reference operator() (const TableIndices< N > &indices)
 
AlignedVector< T >::const_reference operator() (const TableIndices< N > &indices) const
 
void swap (TableBase< N, T > &v)
 
std::size_t memory_consumption () const
 
void serialize (Archive &ar, const unsigned int version)
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Protected Member Functions

AlignedVector< T >::reference el (const unsigned int i, const unsigned int j)
 
AlignedVector< T >::const_reference el (const unsigned int i, const unsigned int j) const
 
- Protected Member Functions inherited from TableBase< 2, T >
size_type position (const TableIndices< N > &indices) const
 
AlignedVector< T >::reference el (const TableIndices< N > &indices)
 
AlignedVector< T >::const_reference el (const TableIndices< N > &indices) const
 

Additional Inherited Members

- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, char *arg2, std::string &arg3)
 
static ::ExceptionBaseExcNoSubscriber (char *arg1, char *arg2)
 
- Protected Attributes inherited from TableBase< 2, T >
AlignedVector< T > values
 
TableIndices< N > table_size
 

Detailed Description

template<typename T>
class Table< 2, T >

A class representing a two-dimensional table, i.e. a matrix of objects (not necessarily only numbers).

For the rationale of this class, and a description of the interface, see the base class. Since this serves as the base class of the full matrix classes in this library, and to keep a minimal compatibility with a predecessor class (vector2d), some additional functions are provided.

Author
Wolfgang Bangerth, 2002

Definition at line 819 of file table.h.

Member Typedef Documentation

◆ size_type

template<typename T >
typedef TableBase<2,T>::size_type Table< 2, T >::size_type

Integer type used to count the number of elements in this container.

Definition at line 825 of file table.h.

Constructor & Destructor Documentation

◆ Table() [1/3]

template<typename T >
Table< 2, T >::Table ( )

Default constructor. Set all dimensions to zero.

◆ Table() [2/3]

template<typename T >
Table< 2, T >::Table ( const unsigned int  size1,
const unsigned int  size2 
)

Constructor. Pass down the given dimensions to the base class.

◆ Table() [3/3]

template<typename T >
template<typename InputIterator >
Table< 2, T >::Table ( const unsigned int  size1,
const unsigned int  size2,
InputIterator  entries,
const bool  C_style_indexing = true 
)

Constructor. Create a table with a given size and initialize it from a set of iterators.

This function is entirely equivalent to creating a table t of the given size and then calling

t.fill (entries, C_style_indexing);

on it, using the TableBase::fill() function where the arguments are explained in more detail. The point, however, is that that is only possible if the table can be changed after running the constructor, whereas calling the current constructor allows sizing and initializing an object right away so that it can be marked const.

Using this constructor, you can do things like this:

const double values[] = { 1, 2, 3, 4, 5, 6 };
const Table<2,double> t(2, 3, entries, true);

You can also initialize a table right from a file, using input iterators:

std::ifstream input ("myfile");
const Table<2,double> t(2, 3,
std::istream_iterator<double>(input),
true);
Parameters
size1The size of this table in the first dimension.
size2The size of this table in the second dimension.
entriesAn iterator to a set of elements from which to initialize this table. It is assumed that iterator can be incremented and dereferenced a sufficient number of times to fill this table.
C_style_indexingIf true, run over elements of the table with the last index changing fastest as we dereference subsequent elements of the input range. If false, change the first index fastest.

Member Function Documentation

◆ reinit()

template<typename T >
void Table< 2, T >::reinit ( const unsigned int  size1,
const unsigned int  size2,
const bool  omit_default_initialization = false 
)

Reinitialize the object. This function is mostly here for compatibility with the earlier vector2d class. Passes down to the base class by converting the arguments to the data type requested by the base class.

◆ operator[]() [1/2]

template<typename T >
::internal::TableBaseAccessors::Accessor<2,T,true,1> Table< 2, T >::operator[] ( const unsigned int  i) const

Access operator. Generate an object that accesses the requested row of this two-dimensional table. Range checks are performed.

This version of the function only allows read access.

◆ operator[]() [2/2]

template<typename T >
::internal::TableBaseAccessors::Accessor<2,T,false,1> Table< 2, T >::operator[] ( const unsigned int  i)

Access operator. Generate an object that accesses the requested row of this two-dimensional table. Range checks are performed.

This version of the function allows read-write access.

◆ operator()() [1/4]

template<typename T >
AlignedVector<T>::const_reference Table< 2, T >::operator() ( const unsigned int  i,
const unsigned int  j 
) const

Direct access to one element of the table by specifying all indices at the same time. Range checks are performed.

This version of the function only allows read access.

◆ operator()() [2/4]

template<typename T >
AlignedVector<T>::reference Table< 2, T >::operator() ( const unsigned int  i,
const unsigned int  j 
)

Direct access to one element of the table by specifying all indices at the same time. Range checks are performed.

This version of the function allows read-write access.

◆ operator()() [3/4]

template<typename T >
AlignedVector<T>::reference Table< 2, T >::operator() ( const TableIndices< 2 > &  indices)

Make the corresponding operator () from the TableBase base class available also in this class.

◆ operator()() [4/4]

template<typename T >
AlignedVector<T>::const_reference Table< 2, T >::operator() ( const TableIndices< 2 > &  indices) const

Make the corresponding operator () from the TableBase base class available also in this class.

◆ n_rows()

template<typename T >
unsigned int Table< 2, T >::n_rows ( ) const

Number of rows. This function really makes only sense since we have a two-dimensional object here.

◆ n_cols()

template<typename T >
unsigned int Table< 2, T >::n_cols ( ) const

Number of columns. This function really makes only sense since we have a two-dimensional object here.

◆ el() [1/2]

template<typename T >
AlignedVector<T>::reference Table< 2, T >::el ( const unsigned int  i,
const unsigned int  j 
)
protected

Return a read-write reference to the element (i,j).

This function does no bounds checking and is only to be used internally and in functions already checked.

These functions are mainly here for compatibility with a former implementation of these table classes for 2d arrays, then called vector2d.

◆ el() [2/2]

template<typename T >
AlignedVector<T>::const_reference Table< 2, T >::el ( const unsigned int  i,
const unsigned int  j 
) const
protected

Return the value of the element (i,j) as a read-only reference.

This function does no bounds checking and is only to be used internally and in functions already checked.

We return the requested value as a constant reference rather than by value since this object may hold data types that may be large, and we don't know here whether copying is expensive or not.

These functions are mainly here for compatibility with a former implementation of these table classes for 2d arrays, then called vector2d.


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