PolyBoRi
TransformedSequence.h
Go to the documentation of this file.
1 // -*- c++ -*-
2 //*****************************************************************************
14 //*****************************************************************************
15 
16 #ifndef polybori_TransformedSequence_h_
17 #define polybori_TransformedSequence_h_
18 
19 // include basic definitions
20 #include <polybori/pbori_defs.h>
22 
23 #include <vector>
24 #include <algorithm>
25 
27 
28 
33 template <class SequenceType, class OperatorType>
35 
36 public:
37  typedef SequenceType sequence_type;
38  typedef typename sequence_type::const_iterator sequence_iterator;
39  typedef OperatorType operator_type;
41 
42 
44  TransformedSequence(const sequence_type& seq, const operator_type& func):
45  m_sequence(seq), m_func(func) {
46  }
47 
49 
50  const_iterator begin() const {
51  return const_iterator(m_sequence.begin(), m_func); }
52 
53  const_iterator end() const {
54  return const_iterator(m_sequence.end(), m_func); }
56 
57 private:
58  sequence_type m_sequence;
59  operator_type m_func;
60 };
61 
62 
64 
65 #endif /* polybori_TransformedSequence_h_ */
This class defines the iterator of Trnasformed sequence.
Definition: TransformedIterator.h:48
#define END_NAMESPACE_PBORI
Finish project's namespace.
Definition: pbori_defs.h:77
TransformedIterator< sequence_iterator, operator_type > const_iterator
Definition: TransformedSequence.h:40
const_iterator begin() const
Sequence-like interface.
Definition: TransformedSequence.h:50
#define BEGIN_NAMESPACE_PBORI
Start project's namespace.
Definition: pbori_defs.h:74
OperatorType operator_type
Definition: TransformedSequence.h:39
const_iterator end() const
Definition: TransformedSequence.h:53
This class converts a sequence-like structure when iterating.
Definition: TransformedSequence.h:34
TransformedSequence(const sequence_type &seq, const operator_type &func)
Construct sequence from a set of terms and an unary conversion function.
Definition: TransformedSequence.h:44
sequence_type::const_iterator sequence_iterator
Definition: TransformedSequence.h:38
SequenceType sequence_type
Definition: TransformedSequence.h:37