libMesh
Public Types | Public Member Functions | Private Attributes | List of all members
libMesh::RBParameters::const_iterator Class Reference

Define a constant iterator for iterating over the map of parameters. More...

#include <rb_parameters.h>

Public Types

typedef std::forward_iterator_tag iterator_category
 
typedef std::pair< std::string, Realvalue_type
 
typedef std::ptrdiff_t difference_type
 
typedef value_typepointer
 
typedef value_typereference
 
typedef std::map< std::string, std::vector< RBParameter > >::const_iterator MapIter
 

Public Member Functions

 const_iterator (const MapIter &it, const std::size_t sample_vec_index, const std::size_t value_vec_index)
 
 const_iterator (const const_iterator &i)=default
 
const_iteratoroperator++ ()
 
const value_typeoperator* () const
 
bool operator== (const const_iterator &other) const
 
bool operator!= (const const_iterator &other) const
 

Private Attributes

MapIter _it
 
std::size_t _sample_vec_index
 
std::size_t _value_vec_index
 
value_type _emulator
 

Detailed Description

Define a constant iterator for iterating over the map of parameters.

This will iterate over every individual value in the map, meaning all three levels (param name, sample vector, value vector). This custom iterator design is copied from the chunked_mapvector class.

Definition at line 97 of file rb_parameters.h.

Member Typedef Documentation

◆ difference_type

Definition at line 103 of file rb_parameters.h.

◆ iterator_category

Definition at line 101 of file rb_parameters.h.

◆ MapIter

typedef std::map<std::string, std::vector<RBParameter> >::const_iterator libMesh::RBParameters::const_iterator::MapIter

Definition at line 108 of file rb_parameters.h.

◆ pointer

Definition at line 104 of file rb_parameters.h.

◆ reference

Definition at line 105 of file rb_parameters.h.

◆ value_type

Definition at line 102 of file rb_parameters.h.

Constructor & Destructor Documentation

◆ const_iterator() [1/2]

libMesh::RBParameters::const_iterator::const_iterator ( const MapIter it,
const std::size_t  sample_vec_index,
const std::size_t  value_vec_index 
)
inline

Definition at line 111 of file rb_parameters.h.

114  : _it(it),
115  _sample_vec_index(sample_vec_index),
116  _value_vec_index(value_vec_index)
117  {}

◆ const_iterator() [2/2]

libMesh::RBParameters::const_iterator::const_iterator ( const const_iterator i)
default

Member Function Documentation

◆ operator!=()

bool libMesh::RBParameters::const_iterator::operator!= ( const const_iterator other) const
inline

Definition at line 172 of file rb_parameters.h.

173  {
174  return !(other == *this);
175  }

◆ operator*()

const value_type& libMesh::RBParameters::const_iterator::operator* ( ) const
inline

Definition at line 159 of file rb_parameters.h.

References _emulator, _it, _sample_vec_index, and _value_vec_index.

◆ operator++()

const_iterator& libMesh::RBParameters::const_iterator::operator++ ( )
inline

Definition at line 123 of file rb_parameters.h.

References _it, _sample_vec_index, and _value_vec_index.

124  {
125  // First increment the value-vector index.
126  // If _value_vec_index goes beyond the current value-vector, reset to the next one.
128  if (_value_vec_index >= _it->second[_sample_vec_index].size())
129  {
130  _value_vec_index = 0;
131  // Now increment the sample-vector index, and do the same check.
132  // If we go beyond the current sample-vector, reset to the next one.
134  if (_sample_vec_index >= _it->second.size())
135  {
136  _sample_vec_index = 0;
137  ++_it;
138  }
139  }
140 
141  return *this;
142  }

◆ operator==()

bool libMesh::RBParameters::const_iterator::operator== ( const const_iterator other) const
inline

Definition at line 166 of file rb_parameters.h.

References _it, and _sample_vec_index.

167  {
168  return (_it == other._it && _sample_vec_index == other._sample_vec_index);
169  }

Member Data Documentation

◆ _emulator

value_type libMesh::RBParameters::const_iterator::_emulator
mutableprivate

Definition at line 195 of file rb_parameters.h.

Referenced by operator*().

◆ _it

MapIter libMesh::RBParameters::const_iterator::_it
private

Definition at line 185 of file rb_parameters.h.

Referenced by operator*(), operator++(), and operator==().

◆ _sample_vec_index

std::size_t libMesh::RBParameters::const_iterator::_sample_vec_index
private

Definition at line 188 of file rb_parameters.h.

Referenced by operator*(), operator++(), and operator==().

◆ _value_vec_index

std::size_t libMesh::RBParameters::const_iterator::_value_vec_index
private

Definition at line 191 of file rb_parameters.h.

Referenced by operator*(), and operator++().


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