#include #include class FunkyVector { std::vector _v; public: FunkyVector(size_t n) : _v(n) {} size_t size() const { return _v.size(); } int &operator[](int i) { if (i >= 0) return _v[i]; else return _v[_v.size() + i]; } }; int main(int, char *[]) { FunkyVector v(10); for (size_t i = 0; i < v.size(); ++i) { v[i] = i; } // 0 1 2 3 4 5 6 7 8 9 for (int i = -5; i < 5; ++i) { std::cout << "v[" << i << "] = " << v[i] << std::endl; } }