#include <iostream>
#include <array>
using namespace std;
template <typename T>
class RefArray
{
public:
RefArray(T* data,
std::size_t offset,
std::size_t size):
m_data(data),
m_offset(offset),
m_size(size)
{
}
std::size_t size()const{ return m_size; }
std::size_t offset()const{ return m_offset; }
T& operator[](std::size_t index)
{
return *(m_data+m_offset+index);
}
const T& operator[](std::size_t index)const
{
return *(m_data+m_offset+index);
}
T* begin()
{
return m_data+m_offset;
}
T* end()
{
return m_data+m_offset+m_size;
}
private:
T* m_data;
std::size_t m_offset;
std::size_t m_size;
};
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
RefArray<int> ra(a,5,5);
for(int e:ra)
std::cout<<e<< std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CmNsYXNzIFJlZkFycmF5CnsKICAgCXB1YmxpYzoKICAgCSAgUmVmQXJyYXkoVCogZGF0YSwKICAgCSAgICAgICAgICBzdGQ6OnNpemVfdCBvZmZzZXQsCiAgIAkgICAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZSk6CiAgIAkgICAgIG1fZGF0YShkYXRhKSwKICAgCSAgICAgbV9vZmZzZXQob2Zmc2V0KSwKICAgCSAgICAgbV9zaXplKHNpemUpCiAgIAkgIHsKICAgCSAgfQogICAJICAKICAgCSAgc3RkOjpzaXplX3Qgc2l6ZSgpY29uc3R7IHJldHVybiBtX3NpemU7IH0KICAgCSAgc3RkOjpzaXplX3Qgb2Zmc2V0KCljb25zdHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgIAkgIAogICAJICBUJiBvcGVyYXRvcltdKHN0ZDo6c2l6ZV90IGluZGV4KQogICAJICB7CiAgIAkgIAlyZXR1cm4gKihtX2RhdGErbV9vZmZzZXQraW5kZXgpOwogICAJICB9CiAgIAkgIAogICAJICBjb25zdCBUJiBvcGVyYXRvcltdKHN0ZDo6c2l6ZV90IGluZGV4KWNvbnN0CiAgIAkgIHsKICAgCSAgCXJldHVybiAqKG1fZGF0YSttX29mZnNldCtpbmRleCk7CiAgIAkgIH0gIAogICAJICAKICAgCSAgVCogYmVnaW4oKQogICAJICB7CiAgIAkgICAgIHJldHVybiBtX2RhdGErbV9vZmZzZXQ7CiAgIAkgIH0KICAgCSAgCiAgIAkgIFQqIGVuZCgpCiAgIAkgIHsKICAgCSAgICAgIHJldHVybiAgbV9kYXRhK21fb2Zmc2V0K21fc2l6ZTsKICAgCSAgfQogICAJICAKICAgIHByaXZhdGU6CiAgICAgIFQqIG1fZGF0YTsKICAgICAgc3RkOjpzaXplX3QgbV9vZmZzZXQ7CiAgICAgIHN0ZDo6c2l6ZV90IG1fc2l6ZTsKfTsKCmludCBtYWluKCkgCnsKCWludCBhWzEwXT17MCwxLDIsMyw0LDUsNiw3LDgsOX07CgkKCVJlZkFycmF5PGludD4gcmEoYSw1LDUpOwoJCglmb3IoaW50IGU6cmEpCgkgICBzdGQ6OmNvdXQ8PGU8PCBzdGQ6OmVuZGw7ICAKCQoJcmV0dXJuIDA7Cn0=