Median< T > Class Template Reference

Median< T > Class Template Reference

#include <qtconcurrentmedian.h>

Class Description

template<typename T>
class QtConcurrent::Median< T >

Definition at line 62 of file qtconcurrentmedian.h.

Public Member Functions

 Median (int _bufferSize)
 
void reset ()
 
void addValue (T value)
 
bool isMedianValid () const
 
median ()
 

Constructor & Destructor Documentation

Median ( int  _bufferSize)
inline

Definition at line 65 of file qtconcurrentmedian.h.

66  : currentMedian(), bufferSize(_bufferSize), currentIndex(0), valid(false), dirty(true)
67  {
68  values.resize(bufferSize);
69  }
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895

Member Function Documentation

void reset ( )
inline

Definition at line 71 of file qtconcurrentmedian.h.

72  {
73  values.fill(0);
74  currentIndex = 0;
75  valid = false;
76  dirty = true;
77  }
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895
void addValue ( value)
inline

Definition at line 79 of file qtconcurrentmedian.h.

80  {
81  currentIndex = ((currentIndex + 1) % bufferSize);
82  if (valid == false && currentIndex % bufferSize == 0)
83  valid = true;
84 
85  // Only update the cached median value when we have to, that
86  // is when the new value is on then other side of the median
87  // compared to the current value at the index.
88  const T currentIndexValue = values[currentIndex];
89  if ((currentIndexValue > currentMedian && currentMedian > value)
90  || (currentMedian > currentIndexValue && value > currentMedian)) {
91  dirty = true;
92  }
93 
94  values[currentIndex] = value;
95  }
GLsizei const GLfloat * value
Definition: GLee.h:1742
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895
bool isMedianValid ( ) const
inline

Definition at line 97 of file qtconcurrentmedian.h.

98  {
99  return valid;
100  }
T median ( )
inline

Definition at line 102 of file qtconcurrentmedian.h.

103  {
104  if (dirty) {
105  dirty = false;
106  QVector<T> sorted = values;
107  qSort(sorted);
108  currentMedian = sorted.at(bufferSize / 2 + 1);
109  }
110  return currentMedian;
111  }
const T & at(int i) const
Definition: qvector.h:350
void qSort(RandomAccessIterator start, RandomAccessIterator end)
Definition: qalgorithms.h:177
GLboolean GLenum GLenum GLvoid * values
Definition: GLee.h:895

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