00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _CYCLICLIST_H_
00022 #define _CYCLICLIST_H_
00023
00024 #include <vector>
00025
00029 template <class T>
00030 class CyclicList
00031 {
00032 public:
00036 CyclicList(int p_size)
00037 {
00038 myOffset = 0;
00039 std::vector<T> _vec(p_size);
00040 myVec.assign(_vec.begin(), _vec.end());
00041 }
00042
00046 virtual ~CyclicList()
00047 {
00048 }
00049
00055 int moveOn()
00056 {
00057 myOffset++;
00058 myOffset %= myVec.size();
00059 return 0;
00060 }
00061
00065 T& operator[](int p_pos)
00066 {
00067 return myVec[(p_pos + myOffset) % myVec.size()];
00068 }
00069
00073 std::vector<T> myVec;
00074
00078 int myOffset;
00079
00080 };
00081
00082
00083 #endif