29 lines
438 B
C++
29 lines
438 B
C++
|
#pragma once
|
||
|
|
||
|
#include <cstdlib>
|
||
|
|
||
|
class RingCounter
|
||
|
{
|
||
|
public:
|
||
|
RingCounter(size_t n, size_t initial = 0)
|
||
|
: n(n), counter(initial) {}
|
||
|
|
||
|
size_t operator++()
|
||
|
{
|
||
|
counter = (counter + 1) % n;
|
||
|
return counter;
|
||
|
}
|
||
|
|
||
|
size_t operator++(int)
|
||
|
{
|
||
|
auto value = counter;
|
||
|
++counter;
|
||
|
return value;
|
||
|
}
|
||
|
|
||
|
operator size_t() const { return counter; }
|
||
|
|
||
|
private:
|
||
|
size_t n, counter;
|
||
|
};
|