Loading...
Searching...
No Matches
Opm::SparseVector< T > Class Template Reference

A SparseVector stores a vector with possibly many empty elements as efficiently as possible. More...

`#include <SparseVector.hpp>`

## Public Member Functions

| SparseVector ()
| Default constructor. Yields an empty SparseVector.
| SparseVector (int sz)
| Constructs a SparseVector with a given size, but no nonzero elements.
template<typename DataIter, typename IntegerIter>
| SparseVector (int sz, DataIter data_beg, DataIter data_end, IntegerIter index_beg, IntegerIter index_end)
| A constructor taking all the element data for the vector and their indices.
void | addElement (const T &elem, int index)
| Appends an element to the vector.
bool | empty () const
int | size () const
| Returns the size of the vector.
int | nonzeroSize () const
| Returns the number of nonzero data elements.
void | clear ()
| Makes the vector empty().
bool | operator== (const SparseVector &other) const
| Equality.
const T & | element (int index) const
| O(log n) element access.
const T & | nonzeroElement (int nzindex) const
| O(1) element access.
int | nonzeroIndex (int nzindex) const
| O(1) index access.

## Detailed Description

template<typename T>
class Opm::SparseVector< T >

A SparseVector stores a vector with possibly many empty elements as efficiently as possible.

It is supposed to behave similarly to a standard vector, but since direct indexing is a O(log n) operation instead of O(1), we do not supply it as operator[].

## Constructor & Destructor Documentation

## SparseVector()

template<typename T>
template<typename DataIter, typename IntegerIter>

Opm::SparseVector< T >::SparseVector | ( | int | sz,
|  | DataIter | data_beg,
|  | DataIter | data_end,
|  | IntegerIter | index_beg,
|  | IntegerIter | index_end )

inline

A constructor taking all the element data for the vector and their indices.

Parameters

  sz | Number of elements for data vector.
  data_beg | The start of the element data.
  data_end | One-beyond-end of the element data.
  index_beg | The start of the index data.
  index_end | One beyond the end of the index data.

## Member Function Documentation

## addElement()

template<typename T>

void Opm::SparseVector< T >::addElement | ( | const T & | elem,
|  | int | index )

inline

Appends an element to the vector.

Note that this function does not increase the size() of the vector, it just adds another nonzero element. Elements must be added in index order.

## element()

template<typename T>

const T & Opm::SparseVector< T >::element | ( | int | index | ) | const

inline

O(log n) element access.

Parameters

  index | the proper vector index

Returns
  the element with the given index, or the default element if no element in the vector has the given index.

## empty()

template<typename T>

bool Opm::SparseVector< T >::empty | ( |  | ) | const

inline

Returns
  true if the vector has size 0.

## nonzeroElement()

template<typename T>

const T & Opm::SparseVector< T >::nonzeroElement | ( | int | nzindex | ) | const

inline

O(1) element access.

Parameters

  nzindex | an index counting only nonzero elements.

Returns
  the nzindex'th nonzero element.

## nonzeroIndex()

template<typename T>

int Opm::SparseVector< T >::nonzeroIndex | ( | int | nzindex | ) | const

inline

O(1) index access.

Parameters

  nzindex | an index counting only nonzero elements.

Returns
  the index of the nzindex'th nonzero element.

## size()

template<typename T>

int Opm::SparseVector< T >::size | ( |  | ) | const

inline

Returns the size of the vector.

Recall that most or all of the vector may be default/zero.

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

- opm/common/utility/numeric/SparseVector.hpp