DiaDes  0.1
DIAgnosis of Discrete-Event System
Measures.hh
Go to the documentation of this file.
1 
10 #ifndef __DIADES__UTILS__MEASURES__HH
11 #define __DIADES__UTILS__MEASURES__HH
12 
13 #include<set>
14 
15 using namespace std;
16 
17 namespace Diades
18 {
19  namespace Utils
20  {
21 
33  template<typename InputIterator1, typename InputIterator2>
34  int sequenceHamming(InputIterator1 first1, InputIterator1 last1,
35  InputIterator2 first2, InputIterator2 last2)
36  {
37  int result = 0;
38  while((first1 != last1)
39  &&
40  (first2 != last2))
41  {
42  if(*first1 != *first2)
43  {
44  ++result;
45  }
46  ++first1;
47  ++first2;
48  }
49  if((first1 != last1) || ((first2 != last2)))
50  {
51  result = -1;
52  }
53  return result;
54  }
55 
56 
57  /*******************************************************************************/
58 
70  template<typename InputIterator1, typename InputIterator2>
71  int orderedHamming(InputIterator1 first1, InputIterator1 last1,
72  InputIterator2 first2, InputIterator2 last2)
73  {
74  int result = 0;
75 
76  while((first1 != last1)
77  &&
78  (first2 != last2))
79  {
80  if(*first1==*first2)
81  {
82  ++first1;
83  ++first2;
84  }
85  else
86  {
87  ++result;
88  if(*first1 < *first2)
89  {
90  ++first1;
91  }
92  else
93  {
94  ++first2;
95  }
96  }
97  }
98  while(first1 != last1)
99  {
100  ++first1;
101  ++result;
102  }
103  while(first2 != last2)
104  {
105  ++first2;
106  ++result;
107  }
108  return result;
109  }
110 
111  /*******************************************************************************/
112 
113 
125  template<typename InputIterator1, typename InputIterator2>
126  int intersectionSize(InputIterator1 first1, InputIterator1 last1,
127  InputIterator2 first2, InputIterator2 last2)
128  {
129  int result = 0;
130  while((first1 != last1)
131  &&
132  (first2 != last2))
133  {
134  if(*first1==*first2)
135  {
136  ++first1;
137  ++first2;
138  ++result;
139  }
140  else
141  {
142  if(*first1 < *first2)
143  {
144  ++first1;
145  }
146  else
147  {
148  ++first2;
149  }
150  }
151  }
152  return result;
153  }
154 
155 
156  /*******************************************************************************/
157 
170  template<typename InputIterator1, typename InputIterator2>
171  int differenceSize(InputIterator1 first1, InputIterator1 last1,
172  InputIterator2 first2, InputIterator2 last2)
173  {
174  int result = 0;
175  while((first1 != last1)
176  &&
177  (first2 != last2))
178  {
179  if(*first1==*first2)
180  {
181  ++first1;
182  ++first2;
183  }
184  else
185  {
186  if(*first1 < *first2)
187  {
188  ++first1;
189  ++result;
190  }
191  else
192  {
193  ++first2;
194  }
195  }
196  }
197  while(first1 != last1)
198  {
199  ++first1;
200  ++result;
201  }
202  return result;
203  }
204  };
205 
206 
207 };
208 
209 #endif
int intersectionSize(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
Definition: Measures.hh:126
STL namespace.
int differenceSize(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
Definition: Measures.hh:171
int sequenceHamming(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
Definition: Measures.hh:34
Namespace of the Diades project.
int orderedHamming(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2, InputIterator2 last2)
Definition: Measures.hh:71