Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

QuasiRandomSequenceIterator.h

Go to the documentation of this file.
00001 #ifndef Impala_Util_QuasiRandomSequenceIterator_h
00002 #define Impala_Util_QuasiRandomSequenceIterator_h
00003 
00004 namespace Impala
00005 {
00006 namespace Util
00007 {
00008 
00009 class QuasiRandomSequenceIterator
00010 {
00011 public:
00012     QuasiRandomSequenceIterator(int length, int seed)
00013     {
00014         int i;
00015         for(i=0 ; i<length ; ++i)
00016             mSequence.push_back(i);
00017         mCurrent = mSequence.begin();
00018         mPickout = 11+(2*seed);
00019     }
00020 
00022     int operator* () const
00023     {
00024         return *mCurrent;
00025     }
00026 
00028     QuasiRandomSequenceIterator& operator++ ()
00029     {
00030         mCurrent = mSequence.erase(mCurrent);
00031         if(mCurrent == mSequence.end())
00032             mCurrent = mSequence.begin();
00033         if(mSequence.size() > 0)
00034             for(int i=mPickout ; i>0 ; --i)
00035             {
00036                 ++mCurrent;
00037                 if(mCurrent == mSequence.end())
00038                     mCurrent = mSequence.begin();
00039             }
00040         return *this;
00041     }
00042 
00043 private:
00044     std::list<int> mSequence;
00045     int mPickout;
00046     std::list<int>::iterator mCurrent;
00047 };
00048 
00049 }//namespace Util
00050 }//namespace Impala
00051 
00052 #endif

Generated on Fri Mar 19 09:31:47 2010 for ImpalaSrc by  doxygen 1.5.1