fork download
  1. #include <iostream>
  2. #include <array>
  3.  
  4. using namespace std;
  5.  
  6. template <typename T>
  7. class RefArray
  8. {
  9. public:
  10. RefArray(T* data,
  11. std::size_t offset,
  12. std::size_t size):
  13. m_data(data),
  14. m_offset(offset),
  15. m_size(size)
  16. {
  17. }
  18.  
  19. std::size_t size()const{ return m_size; }
  20. std::size_t offset()const{ return m_offset; }
  21.  
  22. T& operator[](std::size_t index)
  23. {
  24. return *(m_data+m_offset+index);
  25. }
  26.  
  27. const T& operator[](std::size_t index)const
  28. {
  29. return *(m_data+m_offset+index);
  30. }
  31.  
  32. T* begin()
  33. {
  34. return m_data+m_offset;
  35. }
  36.  
  37. T* end()
  38. {
  39. return m_data+m_offset+m_size;
  40. }
  41.  
  42. private:
  43. T* m_data;
  44. std::size_t m_offset;
  45. std::size_t m_size;
  46. };
  47.  
  48. int main()
  49. {
  50. int a[10]={0,1,2,3,4,5,6,7,8,9};
  51.  
  52. RefArray<int> ra(a,5,5);
  53.  
  54. for(int e:ra)
  55. std::cout<<e<< std::endl;
  56.  
  57. return 0;
  58. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
5
6
7
8
9