Jpp  master_rocky
the software that should make you happy
Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
JTOOLS::JGridCollection< JElement_t, JDistance_t > Class Template Reference

General purpose class for collection of equidistant elements. More...

#include <JGridCollection.hh>

Inheritance diagram for JTOOLS::JGridCollection< JElement_t, JDistance_t >:
JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > > std::vector< JElement_t > JTOOLS::JMappableCollection< JElement_t::abscissa_type, JElement_t::ordinate_type > JTOOLS::JAbstractCollection< JElement_t::abscissa_type > JMATH::JMath< JFirst_t, JSecond_t >

Public Types

typedef JCollection< JElement_t, JDistance_t > collection_type
 
typedef collection_type::abscissa_type abscissa_type
 
typedef collection_type::ordinate_type ordinate_type
 
typedef collection_type::value_type value_type
 
typedef collection_type::const_iterator const_iterator
 
typedef collection_type::const_reverse_iterator const_reverse_iterator
 
typedef collection_type::iterator iterator
 
typedef collection_type::reverse_iterator reverse_iterator
 
typedef collection_type::pair_type pair_type
 
typedef JDistance< typename JElement_t::abscissa_type > distance_type
 
typedef std::vector< value_typecontainer_type
 
typedef JCollectionElementTransformer< value_typetransformer_type
 
typedef JElement_t::abscissa_type key_type
 
typedef JElement_t::ordinate_type mapped_type
 

Public Member Functions

 JGridCollection ()
 Default constructor. More...
 
int getIndex (typename JClass< abscissa_type >::argument_type x) const
 Get index of given abscissa value. More...
 
const_iterator lower_bound (typename JClass< abscissa_type >::argument_type x) const
 Get first position of element i, where x >= i->getX(). More...
 
iterator lower_bound (typename JClass< abscissa_type >::argument_type x)
 Get first position of element i, where x >= i->getX(). More...
 
virtual void clear () override
 Clear. More...
 
virtual const ordinate_typeget (typename JClass< abscissa_type >::argument_type x) const override
 Get ordinate value. More...
 
virtual ordinate_typeget (typename JClass< abscissa_type >::argument_type x) override
 Get ordinate value. More...
 
virtual int getSize () const override
 Get number of elements. More...
 
virtual abscissa_type getX (int index) const override
 Get abscissa value. More...
 
virtual abscissa_type getXmin () const override
 Get minimal abscissa value. More...
 
virtual abscissa_type getXmax () const override
 Get maximal abscissa value. More...
 
const ordinate_typegetY (int index) const
 Get ordinate value. More...
 
ordinate_typegetY (int index)
 Get ordinate value. More...
 
void transform (const transformer_type &transformer)
 Transform collection. More...
 
void sort ()
 Sort elements. More...
 
pair_type insert (const value_type &element)
 Insert element. More...
 
void configure (const JAbstractCollection< abscissa_type > &bounds)
 Configure collection. More...
 
void configure (const JAbstractCollection< abscissa_type > &bounds, typename JClass< ordinate_type >::argument_type value)
 Configure collection. More...
 
void configure (const JAbstractCollection< abscissa_type > &bounds, const JFunction1D_t &function)
 Configure collection. More...
 
bool is_compatible (const JCollection &collection) const
 Test whether collections are compatible. More...
 
JCollectionnegate ()
 Negate collection. More...
 
JCollectionadd (const JCollection &collection)
 Add collection. More...
 
JCollectionadd (typename JClass< ordinate_type >::argument_type value)
 Add offset. More...
 
JCollectionadd (const JFunction1D_t &function)
 Add function. More...
 
JCollectionsub (const JCollection &collection)
 Subtract collection. More...
 
JCollectionsub (typename JClass< ordinate_type >::argument_type value)
 Subtract offset. More...
 
JCollectionsub (const JFunction1D_t &function)
 Subtract function. More...
 
JCollectionmul (const double value)
 Scale contents. More...
 
JFirst_t & mul (const JSecond_t &object)
 Multiply with object. More...
 
JCollectiondiv (const double value)
 Scale contents. More...
 
const JComparatorgetComparator () const
 Get comparator. More...
 
const mapped_typeoperator[] (typename JClass< key_type >::argument_type key) const
 Get mapped value. More...
 
mapped_typeoperator[] (typename JClass< key_type >::argument_type key)
 Get mapped value. More...
 
void put (typename JClass< key_type > ::argument_type key, typename JClass< mapped_type >::argument_type value)
 Put pair-wise element (key,value) into collection. More...
 
bool is_equal (const JAbstractCollection &collection) const
 Test whether abstract collections are equal. More...
 

Public Attributes

JDistance< typename JElement_t::abscissa_type > getDistance
 Function object for distance evaluation. More...
 

Protected Member Functions

void resize (typename container_type::size_type size)
 Resize collection. More...
 

Protected Attributes

JComparator compare
 Function object for comparison. More...
 

Private Member Functions

void erase ()
 
void push_back ()
 
void pop_back ()
 

Detailed Description

template<class JElement_t, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
class JTOOLS::JGridCollection< JElement_t, JDistance_t >

General purpose class for collection of equidistant elements.

For a collection with equidistant elements, the index of the nearest element can directly be computed based on the minimal abscissa value, the maximal abscissa value and the number of elements in the collection. The lower_bound methods are re-implemented in this class which otherwise simply derives from JCollection.

For convenience, the implementation of the standard map operator [] of the JCollection class is maintained.

Definition at line 30 of file JGridCollection.hh.

Member Typedef Documentation

◆ collection_type

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef JCollection<JElement_t, JDistance_t> JTOOLS::JGridCollection< JElement_t, JDistance_t >::collection_type

Definition at line 35 of file JGridCollection.hh.

◆ abscissa_type

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::abscissa_type JTOOLS::JGridCollection< JElement_t, JDistance_t >::abscissa_type

Definition at line 37 of file JGridCollection.hh.

◆ ordinate_type

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::ordinate_type JTOOLS::JGridCollection< JElement_t, JDistance_t >::ordinate_type

Definition at line 38 of file JGridCollection.hh.

◆ value_type

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::value_type JTOOLS::JGridCollection< JElement_t, JDistance_t >::value_type

Definition at line 39 of file JGridCollection.hh.

◆ const_iterator

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::const_iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::const_iterator

Definition at line 41 of file JGridCollection.hh.

◆ const_reverse_iterator

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::const_reverse_iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::const_reverse_iterator

Definition at line 42 of file JGridCollection.hh.

◆ iterator

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::iterator

Definition at line 43 of file JGridCollection.hh.

◆ reverse_iterator

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::reverse_iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::reverse_iterator

Definition at line 44 of file JGridCollection.hh.

◆ pair_type

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
typedef collection_type::pair_type JTOOLS::JGridCollection< JElement_t, JDistance_t >::pair_type

Definition at line 46 of file JGridCollection.hh.

◆ distance_type

typedef JDistance< typename JElement_t::abscissa_type > JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::distance_type
inherited

Definition at line 85 of file JCollection.hh.

◆ container_type

typedef std::vector<value_type> JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::container_type
inherited

Definition at line 89 of file JCollection.hh.

◆ transformer_type

typedef JCollectionElementTransformer<value_type> JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::transformer_type
inherited

Definition at line 96 of file JCollection.hh.

◆ key_type

typedef JElement_t::abscissa_type JTOOLS::JMappableCollection< JElement_t::abscissa_type , JElement_t::ordinate_type >::key_type
inherited

Definition at line 33 of file JMappableCollection.hh.

◆ mapped_type

typedef JElement_t::ordinate_type JTOOLS::JMappableCollection< JElement_t::abscissa_type , JElement_t::ordinate_type >::mapped_type
inherited

Definition at line 34 of file JMappableCollection.hh.

Constructor & Destructor Documentation

◆ JGridCollection()

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
JTOOLS::JGridCollection< JElement_t, JDistance_t >::JGridCollection ( )
inline

Default constructor.

Definition at line 52 of file JGridCollection.hh.

53  {}

Member Function Documentation

◆ getIndex()

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
int JTOOLS::JGridCollection< JElement_t, JDistance_t >::getIndex ( typename JClass< abscissa_type >::argument_type  x) const
inline

Get index of given abscissa value.

For values within the range of this collection, the index starts at zero and ends at number of elements minus one. Note that the index could be less than zero or larger than (or equal to) the number of elements, if the given abscissa value is outside the range of this collection.

Parameters
xabscissa value
Returns
index

Definition at line 66 of file JGridCollection.hh.

67  {
68  return (int) ((this->size() - 1) * (x - this->begin()->getX()) / (this->rbegin()->getX() - this->begin()->getX()));
69  }

◆ lower_bound() [1/2]

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
const_iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::lower_bound ( typename JClass< abscissa_type >::argument_type  x) const
inline

Get first position of element i, where x >= i->getX().

Parameters
xabscissa value
Returns
position of corresponding element

Definition at line 78 of file JGridCollection.hh.

79  {
80  const int index = getIndex(x) + 1;
81 
82  if (index <= 0)
83  return this->begin();
84  else if (index >= (int) this->size())
85  return this->end();
86  else
87  return this->begin() + index;
88  }
int getIndex(typename JClass< abscissa_type >::argument_type x) const
Get index of given abscissa value.

◆ lower_bound() [2/2]

template<class JElement_t , class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
iterator JTOOLS::JGridCollection< JElement_t, JDistance_t >::lower_bound ( typename JClass< abscissa_type >::argument_type  x)
inline

Get first position of element i, where x >= i->getX().

Parameters
xabscissa value
Returns
position of corresponding element

Definition at line 97 of file JGridCollection.hh.

98  {
99  const int index = getIndex(x) + 1;
100 
101  if (index <= 0)
102  return this->begin();
103  else if (index >= (int) this->size())
104  return this->end();
105  else
106  return this->begin() + index;
107  }

◆ clear()

virtual void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::clear ( )
inlineoverridevirtualinherited

Clear.

Implements JTOOLS::JMappableCollection< JElement_t::abscissa_type, JElement_t::ordinate_type >.

Definition at line 150 of file JCollection.hh.

151  {
152  container_type::clear();
153  }

◆ get() [1/2]

virtual const ordinate_type& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::get ( typename JClass< abscissa_type >::argument_type  x) const
inlineoverridevirtualinherited

Get ordinate value.

Parameters
xabscissa value
Returns
ordinate value

Implements JTOOLS::JMappableCollection< JElement_t::abscissa_type, JElement_t::ordinate_type >.

Definition at line 162 of file JCollection.hh.

163  {
164  const_iterator i = this->lower_bound(x);
165 
166  if (i == this->end() || this->getDistance(x, i->getX()) > distance_type::precision) {
167  THROW(JValueOutOfRange, "Invalid abscissa value " << x);
168  }
169 
170  return i->getY();
171  }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:712
Exception for accessing a value in a collection that is outside of its range.
Definition: JException.hh:180
JDistance< typename JElement_t::abscissa_type > getDistance
Function object for distance evaluation.
Definition: JCollection.hh:773
const_iterator lower_bound(typename JClass< abscissa_type >::argument_type x) const
Get first position of element i, where x >= i->getX().
Definition: JCollection.hh:292

◆ get() [2/2]

virtual ordinate_type& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::get ( typename JClass< abscissa_type >::argument_type  x)
inlineoverridevirtualinherited

Get ordinate value.

Parameters
xabscissa value
Returns
ordinate value

Implements JTOOLS::JMappableCollection< JElement_t::abscissa_type, JElement_t::ordinate_type >.

Definition at line 180 of file JCollection.hh.

181  {
182  iterator i = this->lower_bound(x);
183 
184  if (i == this->end() || this->getDistance(x, i->getX()) > distance_type::precision) {
185  i = container_type::insert(i, value_type(x, JMATH::getZero<ordinate_type>()));
186  }
187 
188  return i->getY();
189  }

◆ getSize()

virtual int JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getSize ( ) const
inlineoverridevirtualinherited

Get number of elements.

Returns
number of elements

Implements JTOOLS::JAbstractCollection< JElement_t::abscissa_type >.

Definition at line 197 of file JCollection.hh.

198  {
199  return (int) this->size();
200  }

◆ getX()

virtual abscissa_type JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getX ( int  index) const
inlineoverridevirtualinherited

Get abscissa value.

Parameters
indexindex
Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement_t::abscissa_type >.

Definition at line 209 of file JCollection.hh.

210  {
211  return this->at(index).getX();
212  }

◆ getXmin()

virtual abscissa_type JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getXmin ( ) const
inlineoverridevirtualinherited

Get minimal abscissa value.

Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement_t::abscissa_type >.

Definition at line 220 of file JCollection.hh.

221  {
222  return this->begin()->getX();
223  }

◆ getXmax()

virtual abscissa_type JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getXmax ( ) const
inlineoverridevirtualinherited

Get maximal abscissa value.

Returns
abscissa value

Implements JTOOLS::JAbstractCollection< JElement_t::abscissa_type >.

Definition at line 231 of file JCollection.hh.

232  {
233  return this->rbegin()->getX();
234  }

◆ getY() [1/2]

const ordinate_type& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getY ( int  index) const
inlineinherited

Get ordinate value.

Parameters
indexindex
Returns
ordinate value

Definition at line 244 of file JCollection.hh.

245  {
246  return this->at(index).getY();
247  }

◆ getY() [2/2]

ordinate_type& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getY ( int  index)
inlineinherited

Get ordinate value.

Parameters
indexindex
Returns
ordinate value

Definition at line 256 of file JCollection.hh.

257  {
258  return this->at(index).getY();
259  }

◆ transform()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::transform ( const transformer_type transformer)
inlineinherited

Transform collection.

Parameters
transformerelement transformer

Definition at line 267 of file JCollection.hh.

268  {
269  for (iterator i = this->begin(); i != this->end(); ++i) {
270  *i = transformer(*i);
271  }
272 
273  sort();
274  }

◆ sort()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::sort ( )
inlineinherited

Sort elements.

Definition at line 280 of file JCollection.hh.

281  {
282  std::sort(this->begin(), this->end(), compare);
283  }

◆ insert()

pair_type JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::insert ( const value_type element)
inlineinherited

Insert element.

Parameters
elementelement
Returns
(iterator, status), where status is true if inserted; else false

Definition at line 316 of file JCollection.hh.

317  {
318  iterator i = this->lower_bound(element.getX());
319 
320  if (i == this->end() || this->getDistance(element.getX(), i->getX()) > 0.0)
321  return pair_type(container_type::insert(i, element), true);
322  else
323  return pair_type(this->end(), false);
324  }

◆ configure() [1/3]

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::configure ( const JAbstractCollection< abscissa_type > &  bounds)
inlineinherited

Configure collection.

Parameters
boundsabscissa values

Definition at line 332 of file JCollection.hh.

333  {
334  configure(bounds, JMATH::getZero<ordinate_type>());
335  }
void configure(const JAbstractCollection< abscissa_type > &bounds)
Configure collection.
Definition: JCollection.hh:332

◆ configure() [2/3]

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::configure ( const JAbstractCollection< abscissa_type > &  bounds,
typename JClass< ordinate_type >::argument_type  value 
)
inlineinherited

Configure collection.

Parameters
boundsabscissa values
valueordinate value

Definition at line 344 of file JCollection.hh.

346  {
347  this->resize(bounds.getSize());
348 
349  for (iterator i = this->begin(); i != this->end(); ++i) {
350 
351  const abscissa_type x = bounds.getX(std::distance(this->begin(),i));
352 
353  *i = value_type(x,value);
354  }
355  }
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
void resize(typename container_type::size_type size)
Resize collection.
Definition: JCollection.hh:788
virtual int getSize() const =0
Get number of elements.
virtual abscissa_type getX(int index) const =0
Get abscissa value.

◆ configure() [3/3]

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::configure ( const JAbstractCollection< abscissa_type > &  bounds,
const JFunction1D_t &  function 
)
inlineinherited

Configure collection.

Parameters
boundsabscissa values
functionfunction

Definition at line 365 of file JCollection.hh.

367  {
368  using namespace JLANG;
369 
370  collection_type* out = (is_identical(*this, function) ? new collection_type() : this);
371 
372  for (int i = 0; i != bounds.getSize(); ++i) {
373 
374  const abscissa_type x = bounds.getX(i);
375 
376  out->put(x, function(x));
377  }
378 
379  if (is_identical(*this, function)) {
380 
381  this->swap(*out);
382 
383  delete out;
384  }
385  }
JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > > collection_type
Definition: JCollection.hh:87
Auxiliary classes and methods for language specific functionality.
bool is_identical(JFirst_t &first, JSecond_t &second)
Check if two objects are indentical.
Definition: JLangToolkit.hh:46

◆ is_compatible()

bool JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::is_compatible ( const JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > > &  collection) const
inlineinherited

Test whether collections are compatible.

Parameters
collectioncollection
Returns
true if collections are compatible; else false

Definition at line 394 of file JCollection.hh.

395  {
396  if (this->empty() || collection.empty()) {
397 
398  return true;
399 
400  } else {
401 
402  const double precision = JDistance<abscissa_type>::precision;
403 
404  const_iterator p = this->begin();
405  const_iterator q = collection.begin();
406 
407  if (getDistance(p->getX(), q->getX()) > precision) {
408 
409  do {
410  ++p;
411  } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
412 
413  } else if (getDistance(q->getX(), p->getX()) > precision) {
414 
415  do {
416  ++q;
417  } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
418  }
419 
420  for ( ; p != this->end() && q != collection.end(); ++p, ++q) {
421  if (fabs(getDistance(p->getX(), q->getX())) > precision) {
422  return false;
423  }
424  }
425 
426  return true;
427  }
428  }
Template class for distance evaluation.
Definition: JDistance.hh:24

◆ negate()

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::negate ( )
inlineinherited

Negate collection.

Returns
this collection

Definition at line 436 of file JCollection.hh.

437  {
438  for (iterator i = this->begin(); i != this->end(); ++i) {
439  i->getY() = -i->getY();
440  }
441 
442  return *this;
443  }

◆ add() [1/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::add ( const JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > > &  collection)
inlineinherited

Add collection.

Parameters
collectioncollection
Returns
this collection

Definition at line 452 of file JCollection.hh.

453  {
454  if (!collection.empty()) {
455 
456  if (this->empty()) {
457 
458  for (const_iterator i = collection.begin(); i != collection.end(); ++i) {
459  this->put(i->getX(), +i->getY());
460  }
461 
462  } else if (this->is_compatible(collection)) {
463 
464  const double precision = JDistance<abscissa_type>::precision;
465 
466  iterator p = this->begin();
467  const_iterator q = collection.begin();
468 
469  if (getDistance(p->getX(), q->getX()) > precision) {
470 
471  do {
472  ++p;
473  } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
474 
475  } else if (getDistance(q->getX(), p->getX()) > precision) {
476 
477  do {
478  ++q;
479  } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
480  }
481 
482  const_iterator i = q;
483 
484  for ( ; p != this->end() && i != collection.end(); ++p, ++i) {
485  p->getY() += i->getY();
486  }
487 
488  for ( ; i != collection.end(); ++i) {
489  this->put(i->getX(), +i->getY());
490  }
491 
492  for (i = collection.begin(); i != q; ++i) {
493  this->put(i->getX(), +i->getY());
494  }
495  }
496  }
497 
498  return *this;
499  }
bool is_compatible(const JCollection &collection) const
Test whether collections are compatible.
Definition: JCollection.hh:394
void put(typename JClass< key_type > ::argument_type key, typename JClass< mapped_type >::argument_type value)
Put pair-wise element (key,value) into collection.

◆ add() [2/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::add ( typename JClass< ordinate_type >::argument_type  value)
inlineinherited

Add offset.

Parameters
valueoffset
Returns
this collection

Definition at line 600 of file JCollection.hh.

601  {
602  for (iterator i = this->begin(); i != this->end(); ++i) {
603  i->getY() += value;
604  }
605 
606  return *this;
607  }

◆ add() [3/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::add ( const JFunction1D_t &  function)
inlineinherited

Add function.

Parameters
functionfunction
Returns
this collection

Definition at line 633 of file JCollection.hh.

634  {
635  for (iterator i = this->begin(); i != this->end(); ++i) {
636  i->getY() += function(i->getX());
637  }
638 
639  return *this;
640  }

◆ sub() [1/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::sub ( const JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > > &  collection)
inlineinherited

Subtract collection.

Parameters
collectioncollection
Returns
this collection

Definition at line 508 of file JCollection.hh.

509  {
510  if (!collection.empty()) {
511 
512  if (this->empty()) {
513 
514  for (const_iterator i = collection.begin(); i != collection.end(); ++i) {
515  this->put(i->getX(), -i->getY());
516  }
517 
518  } else if (this->is_compatible(collection)) {
519 
520  const double precision = JDistance<abscissa_type>::precision;
521 
522  iterator p = this->begin();
523  const_iterator q = collection.begin();
524 
525  if (getDistance(p->getX(), q->getX()) > precision) {
526 
527  do {
528  ++p;
529  } while (p != this->end() && getDistance(p->getX(), q->getX()) > precision);
530 
531  } else if (getDistance(q->getX(), p->getX()) > precision) {
532 
533  do {
534  ++q;
535  } while (q != collection.end() && getDistance(q->getX(), p->getX()) > precision);
536  }
537 
538  const_iterator i = q;
539 
540  for ( ; p != this->end() && i != collection.end(); ++p, ++i) {
541  p->getY() -= i->getY();
542  }
543 
544  for ( ; i != collection.end(); ++i) {
545  this->put(i->getX(), -i->getY());
546  }
547 
548  for (i = collection.begin(); i != q; ++i) {
549  this->put(i->getX(), -i->getY());
550  }
551 
552  } else {
553 
554  THROW(JException, "JCollection::add() collections incompatible.");
555  }
556  }
557 
558  return *this;
559  }
General exception.
Definition: JException.hh:24

◆ sub() [2/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::sub ( typename JClass< ordinate_type >::argument_type  value)
inlineinherited

Subtract offset.

Parameters
valueoffset
Returns
this collection

Definition at line 616 of file JCollection.hh.

617  {
618  for (iterator i = this->begin(); i != this->end(); ++i) {
619  i->getY() -= value;
620  }
621 
622  return *this;
623  }

◆ sub() [3/3]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::sub ( const JFunction1D_t &  function)
inlineinherited

Subtract function.

Parameters
functionfunction
Returns
this collection

Definition at line 650 of file JCollection.hh.

651  {
652  for (iterator i = this->begin(); i != this->end(); ++i) {
653  i->getY() -= function(i->getX());
654  }
655 
656  return *this;
657  }

◆ mul() [1/2]

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::mul ( const double  value)
inlineinherited

Scale contents.

Parameters
valuemultiplication factor
Returns
this collection

Definition at line 568 of file JCollection.hh.

569  {
570  for (iterator i = this->begin(); i != this->end(); ++i) {
571  i->getY() *= value;
572  }
573 
574  return *this;
575  }

◆ mul() [2/2]

template<class JFirst_t , class JSecond_t >
JFirst_t& JMATH::JMath< JFirst_t, JSecond_t >::mul ( const JSecond_t &  object)
inlineinherited

Multiply with object.

Parameters
objectobject
Returns
result object

Definition at line 354 of file JMath.hh.

355  {
356  return static_cast<JFirst_t&>(*this) = JFirst_t().mul(static_cast<const JFirst_t&>(*this), object);
357  }

◆ div()

JCollection& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::div ( const double  value)
inlineinherited

Scale contents.

Parameters
valuedivision factor
Returns
this collection

Definition at line 584 of file JCollection.hh.

585  {
586  for (iterator i = this->begin(); i != this->end(); ++i) {
587  i->getY() /= value;
588  }
589 
590  return *this;
591  }

◆ getComparator()

const JComparator& JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getComparator ( ) const
inlineinherited

Get comparator.

Returns
comparator

Definition at line 764 of file JCollection.hh.

765  {
766  return compare;
767  }

◆ resize()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::resize ( typename container_type::size_type  size)
inlineprotectedinherited

Resize collection.

Parameters
sizesize

Definition at line 788 of file JCollection.hh.

789  {
790  container_type::resize(size);
791  }

◆ erase()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::erase ( )
privateinherited

◆ push_back()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::push_back ( )
privateinherited

◆ pop_back()

void JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::pop_back ( )
privateinherited

◆ operator[]() [1/2]

const mapped_type& JTOOLS::JMappableCollection< JElement_t::abscissa_type , JElement_t::ordinate_type >::operator[] ( typename JClass< key_type >::argument_type  key) const
inlineinherited

Get mapped value.

Parameters
keykey
Returns
value

Definition at line 73 of file JMappableCollection.hh.

74  {
75  return get(key);
76  }

◆ operator[]() [2/2]

mapped_type& JTOOLS::JMappableCollection< JElement_t::abscissa_type , JElement_t::ordinate_type >::operator[] ( typename JClass< key_type >::argument_type  key)
inlineinherited

Get mapped value.

Parameters
keykey
Returns
value

Definition at line 85 of file JMappableCollection.hh.

86  {
87  return get(key);
88  }

◆ put()

void JTOOLS::JMappableCollection< JElement_t::abscissa_type , JElement_t::ordinate_type >::put ( typename JClass< key_type > ::argument_type  key,
typename JClass< mapped_type >::argument_type  value 
)
inlineinherited

Put pair-wise element (key,value) into collection.

Parameters
keykey
valuevalue

Definition at line 97 of file JMappableCollection.hh.

99  {
100  get(key) = value;
101  }

◆ is_equal()

bool JTOOLS::JAbstractCollection< JElement_t::abscissa_type >::is_equal ( const JAbstractCollection< JElement_t::abscissa_type > &  collection) const
inlineinherited

Test whether abstract collections are equal.

Parameters
collectionabstract collection
Returns
true if collections are equals; else false

Definition at line 72 of file JAbstractCollection.hh.

73  {
74  if (this->getSize() == collection.getSize()) {
75 
76  for (int i = 0; i != this->getSize(); ++i) {
77 
78  if (this->getX(i) != collection.getX(i)) {
79  return false;
80  }
81  }
82 
83  return true;
84  }
85 
86  return false;
87  }

Member Data Documentation

◆ getDistance

JDistance< typename JElement_t::abscissa_type > JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::getDistance
inherited

Function object for distance evaluation.

Definition at line 773 of file JCollection.hh.

◆ compare

JComparator JTOOLS::JCollection< JElement_t, JDistance< typename JElement_t::abscissa_type > >::compare
protectedinherited

Function object for comparison.

Definition at line 780 of file JCollection.hh.


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