Go to the documentation of this file.
22#ifndef NRLIB_GRID5D_HPP
23#define NRLIB_GRID5D_HPP
34 typedef typename std::vector<A>::iterator iterator;
36 typedef typename std::vector<A>::reference reference;
41 Grid5D( size_t ni, size_t nj, size_t nk, size_t nl, size_t nm, const A& val = A());
47 void Resize( size_t ni, size_t nj, size_t nk, size_t nl, size_t nm, const A& val = A());
61 size_t GetNI() const { return(ni_); }
62 size_t GetNJ() const { return(nj_); }
63 size_t GetNK() const { return(nk_); }
64 size_t GetNL() const { return(nl_); }
65 size_t GetNM() const { return(nm_); }
66 size_t GetN() const { return data_.size(); }
68 inline size_t GetIndex( size_t i, size_t j, size_t k, size_t l, size_t m) const;
69 void GetIJKLM( size_t index, size_t &i, size_t &j, size_t &k, size_t &l, size_t &m) const;
101 data_(ni*nj*nk*nl*nm, val)
118 data_.resize(ni_ * nj_ * nk_ * nl * nm, val);
125 return data_[GetIndex(i, j, k, l, m)];
132 assert( index < GetN());
141 return data_[GetIndex(i, j, k, l, m)];
148 assert( index < GetN());
157 assert(i < GetNI() && j < GetNJ() && k < GetNK() && l < GetNL() && m < GetNM());
159 return i + j*ni_ + k*ni_*nj_ + l*ni_*nj_*nk_ + m*ni_*nj_*nk_*nl_;
165 assert( index < GetN());
168 j = ( index-i)/ni_ % nj_;
169 k = ( index - j*ni_ - i)/ni_/nj_;
170 l = ( index - k*ni_*nj_)/ni_/nj_/nk_;
171 m = ( index - m*ni_*nj_*nk_)/ni_/nj_/nk_/nl_;
177 std::swap(ni_, other.ni_);
178 std::swap(nj_, other.nj_);
179 std::swap(nk_, other.nk_);
180 std::swap(nl_, other.nl_);
181 std::swap(nm_, other.nm_);
182 data_.swap(other.data_);
int index Definition: cJSON.h:168
Definition: grid5d.hpp:32
void Resize(size_t ni, size_t nj, size_t nk, size_t nl, size_t nm, const A &val=A()) Definition: grid5d.hpp:109
std::vector< A >::iterator iterator Definition: grid5d.hpp:34
const_iterator begin() const Definition: grid5d.hpp:58
size_t GetNL() const Definition: grid5d.hpp:64
virtual ~Grid5D() Definition: grid5d.hpp:105
std::vector< A >::reference reference Definition: grid5d.hpp:36
iterator end() Definition: grid5d.hpp:56
void Swap(Grid5D< A > &other) Definition: grid5d.hpp:175
size_t GetNM() const Definition: grid5d.hpp:65
std::vector< A >::const_iterator const_iterator Definition: grid5d.hpp:35
iterator begin() Definition: grid5d.hpp:55
size_t GetNI() const Definition: grid5d.hpp:61
reference operator()(size_t i, size_t j, size_t k, size_t l, size_t m) Definition: grid5d.hpp:123
const_iterator end() const Definition: grid5d.hpp:59
size_t GetNK() const Definition: grid5d.hpp:63
size_t GetN() const Definition: grid5d.hpp:66
Grid5D() Definition: grid5d.hpp:85
void GetIJKLM(size_t index, size_t &i, size_t &j, size_t &k, size_t &l, size_t &m) const Definition: grid5d.hpp:163
size_t GetIndex(size_t i, size_t j, size_t k, size_t l, size_t m) const Definition: grid5d.hpp:155
std::vector< A >::const_reference const_reference Definition: grid5d.hpp:37
size_t GetNJ() const Definition: grid5d.hpp:62
Definition: exception.hpp:31
|