Zivid C++ API 2.14.0+e4a0c4a9-1
Zivid::Array2D< DataFormat > Class Template Reference

Two-dimensional container of data. More...

#include <Zivid/Array2D.h>

Public Types

using ValueType = DataFormat
 The type of the elements stored in the Array2D.
 
using ConstIterator = const DataFormat *
 The iterator type for immutable access. It iterates over individual Array2D elements in row major order.
 

Public Member Functions

 Array2D ()
 Create an empty Array2D.
 
size_t width () const
 Get the width of the array (number of columns)
 
size_t height () const
 Get the height of the array (number of rows)
 
size_t size () const
 Get the number of elements in the array.
 
bool isEmpty () const
 Check if the array is empty.
 
const DataFormat * data () const
 Pointer to the first data element of the array.
 
const DataFormat & operator() (size_t idx) const
 Constant reference to an element given by a 1D linear index.
 
const DataFormat & operator() (size_t i, size_t j) const
 Constant reference to an element given by row and column.
 
ConstIterator begin () const
 Iterator to the beginning of the array.
 
ConstIterator end () const
 Iterator to the end of the array.
 
ConstIterator cbegin () const
 Iterator to the beginning of the array.
 
ConstIterator cend () const
 Iterator to the end of the array.
 
std::string toString () const
 Get array information as string.
 

Friends

class Array2DFactory
 
class Image< DataFormat >
 

Detailed Description

template<typename DataFormat>
class Zivid::Array2D< DataFormat >

Two-dimensional container of data.

Array2D manages the data using implicit sharing via reference counting. Copy or assignment of an Array2D object is shallow (only a pointer to the data is copied), which makes copy/assignment of Array2D fast. The data stored in the array is deallocated when there are no Array2D instances pointing to it.

The type of the elements stored in the array is given by template parameter DataFormat. Elements are stored sequentially in row-major order. Use data to get a pointer to the first element (row 0, column 0).

Member Typedef Documentation

◆ ConstIterator

template<typename DataFormat >
using Zivid::Array2D< DataFormat >::ConstIterator = const DataFormat *

The iterator type for immutable access. It iterates over individual Array2D elements in row major order.

◆ ValueType

template<typename DataFormat >
using Zivid::Array2D< DataFormat >::ValueType = DataFormat

The type of the elements stored in the Array2D.

Constructor & Destructor Documentation

◆ Array2D()

template<typename DataFormat >
Zivid::Array2D< DataFormat >::Array2D ( )
inline

Create an empty Array2D.

Member Function Documentation

◆ begin()

template<typename DataFormat >
ConstIterator Zivid::Array2D< DataFormat >::begin ( ) const
inline

Iterator to the beginning of the array.

◆ cbegin()

template<typename DataFormat >
ConstIterator Zivid::Array2D< DataFormat >::cbegin ( ) const
inline

Iterator to the beginning of the array.

◆ cend()

template<typename DataFormat >
ConstIterator Zivid::Array2D< DataFormat >::cend ( ) const
inline

Iterator to the end of the array.

◆ data()

template<typename DataFormat >
const DataFormat * Zivid::Array2D< DataFormat >::data ( ) const
inline

Pointer to the first data element of the array.

If the array is empty then this method returns nullptr

◆ end()

template<typename DataFormat >
ConstIterator Zivid::Array2D< DataFormat >::end ( ) const
inline

Iterator to the end of the array.

◆ height()

template<typename DataFormat >
size_t Zivid::Array2D< DataFormat >::height ( ) const
inline

Get the height of the array (number of rows)

◆ isEmpty()

template<typename DataFormat >
bool Zivid::Array2D< DataFormat >::isEmpty ( ) const
inline

Check if the array is empty.

◆ operator()() [1/2]

template<typename DataFormat >
const DataFormat & Zivid::Array2D< DataFormat >::operator() ( size_t i,
size_t j ) const
inline

Constant reference to an element given by row and column.

Data is stored in row-major order. No bounds checking is performed. Calling this operator with an argument that is out of range causes undefined behavior. Calling this operator when the Array2D is empty causes undefined behavior.

Parameters
iRow, from 0 to height - 1
jColumn, from 0 to width - 1

◆ operator()() [2/2]

template<typename DataFormat >
const DataFormat & Zivid::Array2D< DataFormat >::operator() ( size_t idx) const
inline

Constant reference to an element given by a 1D linear index.

Data is stored in row-major order. No bounds checking is performed. Calling this operator with an argument that is out of range causes undefined behavior. Calling this operator when the Array2D is empty causes undefined behavior.

Parameters
idxIndex (from 0 to size - 1)

◆ size()

template<typename DataFormat >
size_t Zivid::Array2D< DataFormat >::size ( ) const
inline

Get the number of elements in the array.

This is identical to width() * height()

◆ toString()

template<typename DataFormat >
std::string Zivid::Array2D< DataFormat >::toString ( ) const
inline

Get array information as string.

◆ width()

template<typename DataFormat >
size_t Zivid::Array2D< DataFormat >::width ( ) const
inline

Get the width of the array (number of columns)

Friends And Related Symbol Documentation

◆ Array2DFactory

template<typename DataFormat >
friend class Array2DFactory
friend

◆ Image< DataFormat >

template<typename DataFormat >
friend class Image< DataFormat >
friend

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