Go to the documentation of this file. 1 #ifndef __JTOOLS__JMULTIMAP__
2 #define __JTOOLS__JMULTIMAP__
42 template<
class JAbscissa_t,
52 template<
class JAbscissa_t,
54 template<
class,
class,
class>
class JHead_t,
58 public JHead_t<JAbscissa_t, JMultiMap<JAbscissa_t, JOrdinate_t, JTail_t, JDistance_t>, JDistance_t>,
59 public JMATH::JMath< JMultiMap<JAbscissa_t, JOrdinate_t, JMapList<JHead_t, JTail_t>, JDistance_t> >
65 typedef JHead_t<JAbscissa_t,
81 using map_type::insert;
101 static_cast<map_type&>(*this).add(static_cast<const map_type&>(
map));
115 static_cast<map_type&>(*this).sub(static_cast<const map_type&>(
map));
129 static_cast<map_type&>(*this).mul(value);
142 static_cast<map_type&>(*this).div(value);
154 template<
class JFunction_t>
159 for (
iterator i = this->begin(); i != this->end(); ++i) {
160 i->getY().for_each(
function);
182 template<
unsigned int N,
unsigned int M>
187 for (
iterator i = this->begin(); i != this->end(); ++i) {
193 class super_const_iterator;
199 class super_iterator :
210 friend class super_const_iterator;
249 virtual bool equals(
const super_iterator& cursor)
const
251 return i == cursor.i && (i == range.second || second.equals(cursor.second));
262 if (!second.increment()) {
264 while (++i != range.second) {
266 second = i->getY().super_begin();
268 if (second != i->getY().super_end()) {
274 return i != range.second;
296 return second.getValue();
309 range(__begin, __end)
311 for (i = range.first; i != range.second; ++i) {
313 second = i->getY().super_begin();
315 if (second != i->getY().super_end()) {
324 typename mapped_type::super_iterator
second;
331 class super_const_iterator :
358 range (cursor.range),
360 second(cursor.second)
392 virtual bool equals(
const super_const_iterator& cursor)
const
394 return i == cursor.i && (i == range.second || second.equals(cursor.second));
405 if (!second.increment()) {
407 while (++i != range.second) {
409 second = i->getY().super_begin();
411 if (second != i->getY().super_end()) {
417 return i != range.second;
439 return second.getValue();
452 range(__begin, __end)
454 for (i = range.first; i != range.second; ++i) {
456 second = i->getY().super_begin();
458 if (second != i->getY().super_end()) {
467 typename mapped_type::super_const_iterator
second;
478 return super_const_iterator(this->begin(), this->end());
489 return super_const_iterator(this->end(), this->end());
500 return super_iterator(this->begin(), this->end());
511 return super_iterator(this->end(), this->end());
523 return this->
get(key.first).get(key.second);
535 (*this)[key.first].insert(key.second, value);
576 template<
class JAbscissa_t,
578 template<
class,
class,
class>
class JHead_t,
581 public JHead_t<JAbscissa_t, JOrdinate_t, JDistance_t>,
582 public JMATH::JMath< JMultiMap<JAbscissa_t, JOrdinate_t, JMapList<JHead_t, JLANG::JNullType>, JDistance_t> >
586 enum { NUMBER_OF_DIMENSIONS = 1 };
588 typedef JHead_t<JAbscissa_t, JOrdinate_t, JDistance_t>
map_type;
603 using map_type::insert;
623 static_cast<map_type&>(*this).add(static_cast<const map_type&>(
map));
637 static_cast<map_type&>(*this).sub(static_cast<const map_type&>(
map));
651 static_cast<map_type&>(*this).mul(value);
664 static_cast<map_type&>(*this).div(value);
676 template<
class JFunction_t>
700 template<
unsigned int N,
unsigned int M>
707 class super_const_iterator;
713 class super_iterator :
724 friend class super_const_iterator;
763 virtual bool equals(
const super_iterator& cursor)
const
765 return i == cursor.i;
776 return ++i != range.second;
810 range(__begin, __end),
823 class super_const_iterator :
883 virtual bool equals(
const super_const_iterator& cursor)
const
885 return i == cursor.i;
896 return ++i != range.second;
930 range(__begin, __end),
947 return super_const_iterator(this->begin(), this->end());
958 return super_const_iterator(this->end(), this->end());
969 return super_iterator(this->begin(), this->end());
980 return super_iterator(this->end(), this->end());
992 return get(key.first);
The template JSinglePointer class can be used to hold a pointer to an object.
Template definition of auxiliary base class for comparison of data structures.
Auxiliary class for no type definition.
Template interface for method bool increment().
Auxiliary base class for aritmetic operations of derived class types.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
T get(const JHead &header)
Get object from header.
Auxiliary classes and methods for language specific functionality.